summaryrefslogtreecommitdiff
path: root/graphics
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2021-10-02 03:03:32 +0000
committerNorbert Preining <norbert@preining.info>2021-10-02 03:03:32 +0000
commitac5a96ddb02c62d71eb214ed35e3be9a154d991f (patch)
treecdf35312568ce6b2b69e7374745ddafdd3e3c66b /graphics
parent569e4d488d3398f8ed12807dd67e2b301b7447d5 (diff)
CTAN sync 202110020303
Diffstat (limited to 'graphics')
-rw-r--r--graphics/pstricks/base/Changes21
-rw-r--r--graphics/pstricks/base/dvips/pst-dots.pro8
-rw-r--r--graphics/pstricks/base/dvips/pstricks.pro3
-rw-r--r--graphics/pstricks/base/generic/pstricks-dots.tex148
-rw-r--r--graphics/pstricks/base/generic/pstricks-tex.def5
-rw-r--r--graphics/pstricks/base/generic/pstricks-xetex.def5
-rw-r--r--graphics/pstricks/base/generic/pstricks.tex18
-rw-r--r--graphics/pstricks/base/latex/pstricks.sty3
-rw-r--r--graphics/pstricks/contrib/pst-fill/Changes2
-rw-r--r--graphics/pstricks/contrib/pst-fill/Makefile49
-rw-r--r--graphics/pstricks/contrib/pst-fill/README23
-rw-r--r--graphics/pstricks/contrib/pst-fill/doc/pst-fill-doc.bib168
-rw-r--r--graphics/pstricks/contrib/pst-fill/doc/pst-fill-doc.pdfbin0 -> 957618 bytes
-rw-r--r--graphics/pstricks/contrib/pst-fill/doc/pst-fill-doc.tex1238
-rw-r--r--graphics/pstricks/contrib/pst-fill/latex/pst-fill.sty23
-rw-r--r--graphics/pstricks/contrib/pst-fill/pst-fill.dtx1817
-rw-r--r--graphics/pstricks/contrib/pst-fill/pst-fill.ins37
-rw-r--r--graphics/pstricks/contrib/pst-fill/pst-fill.pdfbin1230303 -> 0 bytes
-rw-r--r--graphics/pstricks/contrib/pst-fill/tex/pst-fill.tex472
19 files changed, 2021 insertions, 2019 deletions
diff --git a/graphics/pstricks/base/Changes b/graphics/pstricks/base/Changes
index 33efe0df40..9bb20606b6 100644
--- a/graphics/pstricks/base/Changes
+++ b/graphics/pstricks/base/Changes
@@ -1,24 +1,9 @@
-% $Id: Changes 269 2021-09-25 13:47:26Z herbert $
+% $Id: Changes 290 2021-10-01 09:20:29Z herbert $
For all changes see file History! Here are only the last one changes
listed.
-Changelog for
-pstricks.tex ---------
-pst-fp.tex -----------
-xdvipdfmx.con --------
-vtex.con -------------
-pstricks-doc ---------
-pstricks.pro ---------
-pst-dots.pro ---------
-pst-algparser.pro ----
-pstricks97.pro -------
-pstricks-pdf.sty -----
-pstricks.sty ---------
-pst-all.sty ---------
-
-
--------------------------------------------------------------------------
@@ -26,6 +11,10 @@ pstricks.tex --------
versions like 2.47a have only changes in other files, but not
in this main package.
+3.11 2021-10-01 - added the missing filled dots
+ - fix for pst-dots.pro (delete one dup)
+ - fix for trailing space before second pspicture
+ - added SolidOctogon for a dot
3.10a 2021-09-25 - fix introduced bug in pstricks.pro
3.10 2021-09-23 - move dot macros into a separate file pstricks-dots.tex
- use the internal Type1 version of PSTricksDotFont for
diff --git a/graphics/pstricks/base/dvips/pst-dots.pro b/graphics/pstricks/base/dvips/pst-dots.pro
index 62353d6c08..9098492b25 100644
--- a/graphics/pstricks/base/dvips/pst-dots.pro
+++ b/graphics/pstricks/base/dvips/pst-dots.pro
@@ -1,7 +1,7 @@
-% $Id: pst-dots.pro 4 2020-06-09 08:32:19Z herbert $
+% $Id: pst-dots.pro 291 2021-10-01 09:22:45Z herbert $
%
%% PostScript prologue for pstricks.tex.
-%% Version 2.02, 2009/06/16
+%% Version 0.02, 2021/10/01
%%
%% For distribution, see pstricks.tex.
%%
@@ -16,7 +16,7 @@
%% to add /Diamond, /SolidDiamond and /BoldDiamond
%% Modified by Herbert Voss (hv) - 2008/04/17
%
-12 dict dup dup begin
+12 dict dup begin
/FontType 1 def
/FontName /PSTricksDotFont def
/FontInfo 9 dict dup begin
@@ -329,6 +329,6 @@ DBB61743DC569337082176ECBAD417354A5F900EA0BB5479162ED7ECCCD71AE8
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
cleartomark
-/PSTricksDotFont exch definefont
+%/PSTricksDotFont exch definefont
%
%% end \ No newline at end of file
diff --git a/graphics/pstricks/base/dvips/pstricks.pro b/graphics/pstricks/base/dvips/pstricks.pro
index 178eb0475a..87dc4d7e6b 100644
--- a/graphics/pstricks/base/dvips/pstricks.pro
+++ b/graphics/pstricks/base/dvips/pstricks.pro
@@ -1,4 +1,4 @@
-% $Id: pstricks.pro 269 2021-09-25 13:47:26Z herbert $
+% $Id: pstricks.pro 290 2021-10-01 09:20:29Z herbert $
%
%% PostScript prologue for pstricks.tex.
%% Version 1.40, 2021/09/25
@@ -40,6 +40,7 @@ revision 952 gt
/tx@Dict 200 dict def % the main PSTricks dictionary
tx@Dict begin
/ADict 25 dict def % The arrow dictionary
+/fill@Dict 30 dict def % the fill dictionary
/CM { matrix currentmatrix } bind def
/SLW /setlinewidth load def
/CLW /currentlinewidth load def
diff --git a/graphics/pstricks/base/generic/pstricks-dots.tex b/graphics/pstricks/base/generic/pstricks-dots.tex
index eecc52c096..e5c3e2c022 100644
--- a/graphics/pstricks/base/generic/pstricks-dots.tex
+++ b/graphics/pstricks/base/generic/pstricks-dots.tex
@@ -1,4 +1,4 @@
-%% $Id: pstricks-dots.tex 269 2021-09-25 13:47:26Z herbert $
+%% $Id: pstricks-dots.tex 273 2021-09-27 08:11:44Z herbert $
%%
%% This is file `pstricks-dots.tex',
%%
@@ -158,71 +158,85 @@
%%70
% /Pentagon /SolidPentagon /SolidSquare /Square /Triangle /SolidTriangle /.notdef /.notdef
% /Mul /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
- \newpsfontdot{B+}[1.5 0.0 0.0 1.5 0 0]{PSTricksDotFont}{<41>}
- \newpsfontdot{BoldAdd}[1.5 0.0 0.0 1.5 0 0]{PSTricksDotFont}{<41>}
- \newpsfontdot{Bo}[1.5 0.0 0.0 1.5 0 0]{PSTricksDotFont}{<43>}
- \newpsfontdot{BoldCircle}[1.5 0.0 0.0 1.5 0 0]{PSTricksDotFont}{<43>}
- \newpsfontdot{BoldDiamond}[1.5 0.0 0.0 1.5 0 0]{PSTricksDotFont}{<44>}
- \newpsfontdot{Bdiamond}[1.5 0.0 0.0 1.5 0 0]{PSTricksDotFont}{<44>}
- \newpsfontdot{SolidOtimes}[1.5 0.0 0.0 1.5 0 0]{PSTricksDotFont}{<45>}
- \newpsfontdot{BoldOctogon}[1.5 0.0 0.0 1.5 0 0]{PSTricksDotFont}{<46>}
- \newpsfontdot{SolidHexagon}[1.5 0.0 0.0 1.5 0 0]{PSTricksDotFont}{<47>}
- \newpsfontdot{BoldHexagon}[1.5 0.0 0.0 1.5 0 0]{PSTricksDotFont}{<48>}
- \newpsfontdot{BoldBar}[1.5 0.0 0.0 1.5 0 0]{PSTricksDotFont}{<49>}
- \newpsfontdot{B|}[1.5 0.0 0.0 1.5 0 0]{PSTricksDotFont}{<49>}
- \newpsfontdot{Asterisk*}[1.5 0.0 0.0 1.5 0 0]{PSTricksDotFont}{<4A>}
- \newpsfontdot{SolidAsterisk}[1.5 0.0 0.0 1.5 0 0]{PSTricksDotFont}{<4A>}
- \newpsfontdot{BoldAsterisk}[1.5 0.0 0.0 1.5 0 0]{PSTricksDotFont}{<4B>}
- \newpsfontdot{Basterisk}[1.5 0.0 0.0 1.5 0 0]{PSTricksDotFont}{<4B>}
- \newpsfontdot{BoldOplus}[1.5 0.0 0.0 1.5 0 0]{PSTricksDotFont}{<4D>}
- \newpsfontdot{BoldOtimes}[1.5 0.0 0.0 1.5 0 0]{PSTricksDotFont}{<4E>}
- \newpsfontdot{BoldPentagon}[1.5 0.0 0.0 1.5 0 0]{PSTricksDotFont}{<50>}
- \newpsfontdot{Bpentagon}[1.5 0.0 0.0 1.5 0 0]{PSTricksDotFont}{<50>}
- \newpsfontdot{BoldSquare}[1.5 0.0 0.0 1.5 0 0]{PSTricksDotFont}{<53>}
- \newpsfontdot{Bsquare}[1.5 0.0 0.0 1.5 0 0]{PSTricksDotFont}{<53>}
- \newpsfontdot{Btriangle}[1.5 0.0 0.0 1.5 0 0]{PSTricksDotFont}{<54>}
- \newpsfontdot{BoldTriangle}[1.5 0.0 0.0 1.5 0 0]{PSTricksDotFont}{<54>}
- \newpsfontdot{BoldMul}[1.5 0.0 0.0 1.5 0 0]{PSTricksDotFont}{<58>}
-%
- \newpsfontdot{+}[1.5 0.0 0.0 1.5 0 0]{PSTricksDotFont}{<61>}
- \newpsfontdot{Add}[1.5 0.0 0.0 1.5 0 0]{PSTricksDotFont}{<61>}
- \newpsfontdot{bullet}[1.5 0.0 0.0 1.5 0 0]{PSTricksDotFont}{<62>}
- \newpsfontdot{Bullet}[1.5 0.0 0.0 1.5 0 0]{PSTricksDotFont}{<62>}
- \newpsfontdot{*}[1.5 0.0 0.0 1.5 0 0]{PSTricksDotFont}{<62>}
- \newpsfontdot{o}[1.5 0.0 0.0 1.5 0 0]{PSTricksDotFont}{<63>}
- \newpsfontdot{Circle}[1.5 0.0 0.0 1.5 0 0]{PSTricksDotFont}{<63>}
- \newpsfontdot{Diamond}[1.5 0.0 0.0 1.5 0 0]{PSTricksDotFont}{<64>}
- \newpsfontdot{diamond}[1.5 0.0 0.0 1.5 0 0]{PSTricksDotFont}{<64>}
- \newpsfontdot{Oplus*}[1.5 0.0 0.0 1.5 0 0]{PSTricksDotFont}{<65>}
- \newpsfontdot{SolidOplus}[1.5 0.0 0.0 1.5 0 0]{PSTricksDotFont}{<65>}
- \newpsfontdot{Octogon}[1.5 0.0 0.0 1.5 0 0]{PSTricksDotFont}{<66>}
- \newpsfontdot{Octogon*}[1.5 0.0 0.0 1.5 0 0]{PSTricksDotFont}{<67>}
- \newpsfontdot{Hexagon}[1.5 0.0 0.0 1.5 0 0]{PSTricksDotFont}{<68>}
- \newpsfontdot{Bar}[1.5 0.0 0.0 1.5 0 0]{PSTricksDotFont}{<69>}
- \newpsfontdot{|}[1.5 0.0 0.0 1.5 0 0]{PSTricksDotFont}{<69>}
- \newpsfontdot{asterisk}[1.5 0.0 0.0 1.5 0 0]{PSTricksDotFont}{<6B>}
- \newpsfontdot{Asterisk}[1.5 0.0 0.0 1.5 0 0]{PSTricksDotFont}{<6B>}
- \newpsfontdot{SolidDiamond}[1.5 0.0 0.0 1.5 0 0]{PSTricksDotFont}{<6C>}
- \newpsfontdot{diamond*}[1.5 0.0 0.0 1.5 0 0]{PSTricksDotFont}{<6C>}
- \newpsfontdot{oplus}[1.5 0.0 0.0 1.5 0 0]{PSTricksDotFont}{<6D>}
- \newpsfontdot{Oplus}[1.5 0.0 0.0 1.5 0 0]{PSTricksDotFont}{<6D>}
- \newpsfontdot{otimes}[1.5 0.0 0.0 1.5 0 0]{PSTricksDotFont}{<6E>}
- \newpsfontdot{Otimes}[1.5 0.0 0.0 1.5 0 0]{PSTricksDotFont}{<6E>}
-%
- \newpsfontdot{pentagon}[1.5 0.0 0.0 1.5 0 0]{PSTricksDotFont}{<70>}
- \newpsfontdot{SolidPentagon}[1.5 0.0 0.0 1.5 0 0]{PSTricksDotFont}{<71>}
- \newpsfontdot{Pentagon}[1.5 0.0 0.0 1.5 0 0]{PSTricksDotFont}{<70>}
- \newpsfontdot{pentagon*}[1.5 0.0 0.0 1.5 0 0]{PSTricksDotFont}{<71>}
- \newpsfontdot{square*}[1.5 0.0 0.0 1.5 0 0]{PSTricksDotFont}{<72>}
- \newpsfontdot{SolidSquare}[1.5 0.0 0.0 1.5 0 0]{PSTricksDotFont}{<72>}
- \newpsfontdot{square}[1.5 0.0 0.0 1.5 0 0]{PSTricksDotFont}{<73>}
- \newpsfontdot{Square}[1.5 0.0 0.0 1.5 0 0]{PSTricksDotFont}{<73>}
- \newpsfontdot{triangle}[1.5 0.0 0.0 1.5 0 0]{PSTricksDotFont}{<74>}
- \newpsfontdot{Triangle}[1.5 0.0 0.0 1.5 0 0]{PSTricksDotFont}{<74>}
- \newpsfontdot{triangle*}[1.5 0.0 0.0 1.5 0 0]{PSTricksDotFont}{<75>}
- \newpsfontdot{SolidTriangle}[1.5 0.0 0.0 1.5 0 0]{PSTricksDotFont}{<75>}
- \newpsfontdot{x}[1.5 0.0 0.0 1.5 0 0]{PSTricksDotFont}{<78>}
- \newpsfontdot{Mul}[1.5 0.0 0.0 1.5 0 0]{PSTricksDotFont}{<78>}
-%
+ \newpsfontdot{+}[1.0 0.0 0.0 1.0 0 0]{PSTricksDotFont}{<61>}
+ \newpsfontdot{Add}[1.0 0.0 0.0 1.0 0 0]{PSTricksDotFont}{<61>}
+ \newpsfontdot{B+}[1.0 0.0 0.0 1.0 0 0]{PSTricksDotFont}{<41>}
+ \newpsfontdot{BoldAdd}[1.0 0.0 0.0 1.0 0 0]{PSTricksDotFont}{<41>}
+%
+ \newpsfontdot{x}[1.0 0.0 0.0 1.0 0 0]{PSTricksDotFont}{<78>}
+ \newpsfontdot{times}[1.0 0.0 0.0 1.0 0 0]{PSTricksDotFont}{<78>}
+ \newpsfontdot{Mul}[1.0 0.0 0.0 1.0 0 0]{PSTricksDotFont}{<78>}
+%
+ \newpsfontdot{bullet}[1.0 0.0 0.0 1.0 0 0]{PSTricksDotFont}{<62>}
+ \newpsfontdot{Bullet}[1.0 0.0 0.0 1.0 0 0]{PSTricksDotFont}{<62>}
+ \newpsfontdot{*}[1.0 0.0 0.0 1.0 0 0]{PSTricksDotFont}{<62>}
+%
+ \newpsfontdotH{o}[1.0 0.0 0.0 1.0 0 0]{PSTricksDotFont}{<63>}{<62>}
+ \newpsfontdotH{Circle}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(c)}{(b)}
+ \newpsfontdotH{Bo}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(C)}{(b)}
+ \newpsfontdotH{BoldCircle}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(C)}{(b)}
+%
+ \newpsfontdot{oplus}[1.0 0.0 0.0 1.0 0 0]{PSTricksDotFont}{<6D>}
+ \newpsfontdotH{Oplus}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(m)}{(b)}
+ \newpsfontdotH{Oplus*}[1.0 0.0 0.0 1.0 0 0]{PSTricksDotFont}{(e)}{(b)}
+ \newpsfontdotH{SolidOplus}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(e)}{(b)}
+ \newpsfontdotH{BoldOplus}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(M)}{(b)}
+%
+ \newpsfontdot{otimes}[1.0 0.0 0.0 1.0 0 0]{PSTricksDotFont}{<6E>}
+ \newpsfontdotH{Otimes}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(n)}{(b)}
+ \newpsfontdot{BoldMul}[1.0 0.0 0.0 1.0 0 0]{PSTricksDotFont}{<58>}
+ \newpsfontdotH{BoldOtimes}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(N)}{(b)}
+ \newpsfontdotH{SolidOtimes}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(E)}{(b)}
+%
+ \newpsfontdot{asterisk}[1.0 0.0 0.0 1.0 0 0]{PSTricksDotFont}{<6B>}
+ \newpsfontdot{Asterisk}[1.0 0.0 0.0 1.0 0 0]{PSTricksDotFont}{<6B>}
+ \newpsfontdot{Asterisk*}[1.0 0.0 0.0 1.0 0 0]{PSTricksDotFont}{<4A>}
+ \newpsfontdotH{SolidAsterisk}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(J)}{(b)}
+ \newpsfontdot{BoldAsterisk}[1.0 0.0 0.0 1.0 0 0]{PSTricksDotFont}{<4B>}
+ \newpsfontdot{Basterisk}[1.0 0.0 0.0 1.0 0 0]{PSTricksDotFont}{<4B>}
+%
+ \newpsfontdot{Bar}[1.0 0.0 0.0 1.0 0 0]{PSTricksDotFont}{<69>}
+ \newpsfontdot{|}[1.0 0.0 0.0 1.0 0 0]{PSTricksDotFont}{<69>}
+ \newpsfontdot{BoldBar}[1.0 0.0 0.0 1.0 0 0]{PSTricksDotFont}{<49>}
+ \newpsfontdot{B|}[1.0 0.0 0.0 1.0 0 0]{PSTricksDotFont}{<49>}
+%
+ \newpsfontdotH{triangle}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(t)}{(u)}
+ \newpsfontdotH{Btriangle}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(T)}{(u)}
+ \newpsfontdotH{Triangle}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(t)}{(u)}
+ \newpsfontdotH{BoldTriangle}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(T)}{(u)}
+ \newpsfontdot{triangle*}[1.0 0.0 0.0 1.0 0 0]{PSTricksDotFont}{<75>}
+ \newpsfontdot{SolidTriangle}[1.0 0.0 0.0 1.0 0 0]{PSTricksDotFont}{<75>}
+%
+ \newpsfontdotH{square}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(s)}{(r)}
+ \newpsfontdot{square*}[1.0 0.0 0.0 1.0 0 0]{PSTricksDotFont}{<72>}
+ \newpsfontdot{SolidSquare}[1.0 0.0 0.0 1.0 0 0]{PSTricksDotFont}{<72>}
+ \newpsfontdotH{Bsquare}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(S)}{(r)}
+ \newpsfontdotH{Square}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(s)}{(r)}
+ \newpsfontdotH{BoldSquare}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(S)}{(r)}
+%
+ \newpsfontdotH{diamond}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(d)}{(l)}
+ \newpsfontdotH{Diamond}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(d)}{(l)}
+ \newpsfontdotH{BoldDiamond}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(D)}{(l)}
+ \newpsfontdotH{Bdiamond}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(D)}{(l)}
+ \newpsfontdot{diamond*}[1.0 0.0 0.0 1.0 0 0]{PSTricksDotFont}{<6C>}
+ \newpsfontdot{SolidDiamond}[1.0 0.0 0.0 1.0 0 0]{PSTricksDotFont}{<6C>}
+%
+ \newpsfontdotH{pentagon}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(p)}{(q)}
+ \newpsfontdotH{Bpentagon}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(P)}{(q)}
+ \newpsfontdotH{BoldPentagon}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(P)}{(q)}
+ \newpsfontdotH{Pentagon}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(p)}{(q)}
+ \newpsfontdot{pentagon*}[1.0 0.0 0.0 1.0 0 0]{PSTricksDotFont}{<71>}
+ \newpsfontdot{SolidPentagon}[1.0 0.0 0.0 1.0 0 0]{PSTricksDotFont}{<71>}
+%
+ \newpsfontdotH{Hexagon}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(h)}{(G)}
+ \newpsfontdot{SolidHexagon}[1.0 0.0 0.0 1.0 0 0]{PSTricksDotFont}{<47>}
+ \newpsfontdotH{BoldHexagon}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(H)}{(G)}
+ \newpsfontdot{BoldHexagon}[1.0 0.0 0.0 1.0 0 0]{PSTricksDotFont}{<48>}
+%
+ \newpsfontdotH{Octogon}[1 0 0 1 0 0]{PSTricksDotFont}{(f)}{(g)}
+ \newpsfontdot{Octogon*}[1.0 0.0 0.0 1.0 0 0]{PSTricksDotFont}{<67>}
+ \newpsfontdotH{BoldOctogon}[1 0 0 1 0 0]{PSTricksDotFont}{(F)}{(g)}
+ \newpsfontdot{SolidOctogon}[1.0 0.0 0.0 1.0 0 0]{PSTricksDotFont}{<67>}
+%%
%% END: pstricks-dots.tex
\endinput
diff --git a/graphics/pstricks/base/generic/pstricks-tex.def b/graphics/pstricks/base/generic/pstricks-tex.def
index 0e69a13917..85df2b710b 100644
--- a/graphics/pstricks/base/generic/pstricks-tex.def
+++ b/graphics/pstricks/base/generic/pstricks-tex.def
@@ -1,6 +1,7 @@
-%% $Id: pstricks-tex.def 169 2021-08-31 17:46:12Z herbert $
+%% $Id: pstricks-tex.def 276 2021-09-27 11:28:22Z herbert $
%% pstricks-tex.def
-%% Copyright 2017- Herbert Voss
+%
+%% fileversion and filedate see main file pstricks.tex
%
% This work may be distributed and/or modified under the
% conditions of the LaTeX Project Public License, either version 1.3
diff --git a/graphics/pstricks/base/generic/pstricks-xetex.def b/graphics/pstricks/base/generic/pstricks-xetex.def
index 68049094a2..61495720b2 100644
--- a/graphics/pstricks/base/generic/pstricks-xetex.def
+++ b/graphics/pstricks/base/generic/pstricks-xetex.def
@@ -1,7 +1,5 @@
-%% $Id: pstricks-xetex.def 4 2020-06-09 08:32:19Z herbert $
+%% $Id: pstricks-xetex.def 276 2021-09-27 11:28:22Z herbert $
%%
-%% Copyright 2019- Herbert Voss
-%
% This work may be distributed and/or modified under the
% conditions of the LaTeX Project Public License, either version 1.3
% of this license or (at your option) any later version.
@@ -13,6 +11,7 @@
% The xdvipdfmx driver does not support all node macros. In the following
% there are alternatives defined:
%
+%% fileversion and filedate see main file pstricks.tex
%% \ncput -> \NCput
%
\def\NCput{\pst@object{NCput}}
diff --git a/graphics/pstricks/base/generic/pstricks.tex b/graphics/pstricks/base/generic/pstricks.tex
index 1ce453ecf5..d98e585069 100644
--- a/graphics/pstricks/base/generic/pstricks.tex
+++ b/graphics/pstricks/base/generic/pstricks.tex
@@ -70,7 +70,7 @@
\XKV@tempa
}
%
-\def\ProvidesPackageRCS#1{\typeout{Loading #1}}%
+\def\ProvidesPackageRCS#1{\typeout{Loading #1}}% needed for the pgf packages
%\@ifnextchar[\ProvidesPackageRCS@i{\ProvidesPackageRCS@i[] }}%$
%\def\ProvidesPackageRCS@i[#1]#2{}
@@ -81,8 +81,8 @@
\fi
\let\pgfforeach\foreach
%
-\def\fileversion{3.10a}
-\def\filedate{2021/09/25}
+\def\fileversion{3.11}
+\def\filedate{2021/09/27}
\pst@addfams{pstricks}
%
%\define@boolkey[psset]{pstricks}[Pst@]{useURWfonts}[true]{}
@@ -489,7 +489,6 @@
\@ifundefined{pst@ATH}{\def\pst@ATH<#1>{}}{}
%
\pstheader{pstricks.pro}
-%\pstheader{pstricks-fonts.pro}
\pstheader{pst-algparser.pro}
\pstheader{pst-tools.pro}
%
@@ -3759,12 +3758,19 @@ pop
\def\tx@RotEnd{ RotEnd }
\def\pst@rotate#1#2{%
+ \ifx\relax#1\relax\else
\setbox#2=\hbox{\pst@Verb{% check for empty #1
(#1) /strAngle ED strAngle length 0 eq { 0 }{ #1 } ifelse
%\ifPSTlualatex neg \fi
\tx@RotBegin}\box#2\pst@Verb{\tx@RotEnd}}%
+ \fi
}%
+% \setbox#2=\hbox{\pst@Verb{% check for empty #1
+% (#1) /strAngle ED strAngle length 0 eq { 0 }{ #1 } ifelse
+% %\ifPSTlualatex neg \fi
+% \tx@RotBegin}\box#2\pst@Verb{\tx@RotEnd}}%
+
\def\psput@cartesian#1{%
\hbox to \z@{\kern\pst@dimg{\vbox to \z@{\vss\box#1\vskip\pst@dimh}\hss}}%
}
@@ -4100,9 +4106,9 @@ pop
\ifshowgrid\ifnum\showgridp@s=0\psgrid[style=gridstyle]\fi\fi
% ----------- 1.10/12 end hv -------------------
\ignorespaces% % 2008-12-07
- \pstVerb{\pst@number\pslinewidth setlinewidth 0 setgray}% default setting (needed for lualatex)
\ifPst@pgffunctions\pstVerb{ pgffunctions }\fi% hv 2013-04-17
}
+
\def\pic@coor{(0,0)(0,0)(10,10)}
\def\endpspicture{%
\ifshowgrid\ifnum\showgridp@s>0
@@ -4141,6 +4147,8 @@ pop
\@namedef{endpspicture*}{\endpspicture}
%
\ifx\pstcustomize\relax \input pstricks.con \fi
+\pstVerb{0.8 setlinewidth 0 setgray}% default setting (needed for lualatex)
+
\catcode`\@=\PstAtCode\relax
%
\endinput
diff --git a/graphics/pstricks/base/latex/pstricks.sty b/graphics/pstricks/base/latex/pstricks.sty
index ad58f86fca..b671da7580 100644
--- a/graphics/pstricks/base/latex/pstricks.sty
+++ b/graphics/pstricks/base/latex/pstricks.sty
@@ -1,4 +1,4 @@
-% $Id: pstricks.sty 181 2021-09-04 06:35:45Z herbert $
+% $Id: pstricks.sty 263 2021-09-24 17:58:30Z herbert $
%%
%% This is file `pstricks.sty'.
%%
@@ -84,7 +84,6 @@
\DeclareOption*{\PassOptionsToPackage\CurrentOption{\pst@ColorPackage}}
\ProcessOptions\relax
-%\RequirePackage{iftex}
\ifpst@useCalc
\RequirePackage{pst-calculate}
\fi
diff --git a/graphics/pstricks/contrib/pst-fill/Changes b/graphics/pstricks/contrib/pst-fill/Changes
index 9310a2082c..8b7ad7e33b 100644
--- a/graphics/pstricks/contrib/pst-fill/Changes
+++ b/graphics/pstricks/contrib/pst-fill/Changes
@@ -1,4 +1,6 @@
pst-fill.sty --------
+
pst-fill.tex --------
+1.02 2021-10-01 make it run under lualatex
1.01 2007-03-10 bugfix for incomplete ifx (hv)
diff --git a/graphics/pstricks/contrib/pst-fill/Makefile b/graphics/pstricks/contrib/pst-fill/Makefile
deleted file mode 100644
index 1586e6f076..0000000000
--- a/graphics/pstricks/contrib/pst-fill/Makefile
+++ /dev/null
@@ -1,49 +0,0 @@
-
-# `Makefile' for `pst-fill.pdf', hv, 2006/08/11
-
-.SUFFIXES : .tex .ltx .dvi .ps .pdf .eps
-
-MAIN = pst-fill
-
-LATEX = latex
-
-ARCHNAME = $(MAIN)-$(shell date +%y%m%d)
-
-ARCHFILES = $(MAIN).dtx $(MAIN).ins Makefile
-
-all : $(MAIN).sty doc clean
-
-$(MAIN).sty : $(MAIN).dtx
-%.sty : %.dtx
- tex $(basename $<).ins
-
-doc: $(MAIN).pdf
-
-$(MAIN).pdf : $(MAIN).ps
- GS_OPTIONS=-dAutoRotatePages=/None ps2pdf $<
-
-$(MAIN).ps : $(MAIN).dvi
- dvips $<
-
-$(MAIN).dvi : $(MAIN).dtx
- $(LATEX) $<
- if ! test -f $(basename $<).glo ; then touch $(basename $<).glo; fi
- if ! test -f $(basename $<).idx ; then touch $(basename $<).idx; fi
- makeindex -s gglo.ist -t $(basename $<).glg -o $(basename $<).gls \
- $(basename $<).glo
- makeindex -s gind.ist -t $(basename $<).ilg -o $(basename $<).ind \
- $(basename $<).idx
- $(LATEX) $<
- $(LATEX) $<
-
-clean :
- $(RM) $(addprefix $(MAIN), .log .aux .glg .glo .gls .ilg .idx .ind .tmp .toc .out)
- $(RM) $(addprefix $(MAIN), .dvi .ps)
-
-veryclean : clean
- $(RM) $(MAIN).pdf
-
-arch :
- zip $(ARCHNAME).zip $(ARCHFILES)
-
-# EOF
diff --git a/graphics/pstricks/contrib/pst-fill/README b/graphics/pstricks/contrib/pst-fill/README
index 71304960df..6a97aba507 100644
--- a/graphics/pstricks/contrib/pst-fill/README
+++ b/graphics/pstricks/contrib/pst-fill/README
@@ -1,20 +1,8 @@
pst-fill: tiling and filing of areas and characters
-
-pst-fill.dtx - The dtx file
-pst-fill.ins - The ins file
-pst-fill.pdf - The documentation, generated from the docstrip file
-
-to get the sty, the tex and the pdf file, run the Makefile or alternative
-
-latex pst-fill.ins
-latex pst-fill.dtx
-makeindex -s gind.ist pst-fill
-makeindex -s gglo.ist -o pst-fill.gls pst-fill.glo
-latex pst-fill.dtx
-dvips pst-fill.dvi
-ps2pdf pst-fill.ps
-
+pst-fill.sty - The latex file
+pst-fill.tex - The tex file
+pst-fill-doc.pdf - The documentation, generated from the docstrip file
This version of pst-fill uses the extended version of the keyval
package. So be sure that you
@@ -23,7 +11,10 @@ package. So be sure that you
- do not load another package after pst-fill, which loads
the old keyval.sty or pst-key.tex
+%% This program can be redistributed and/or modified under the terms
+%% of the LaTeX Project Public License Distributed from CTAN archives
+%% in directory macros/latex/base/lppl.txt.
--
-Herbert Voss 2006-11-06
+hvoss@tug.org \ No newline at end of file
diff --git a/graphics/pstricks/contrib/pst-fill/doc/pst-fill-doc.bib b/graphics/pstricks/contrib/pst-fill/doc/pst-fill-doc.bib
new file mode 100644
index 0000000000..a92704ac2d
--- /dev/null
+++ b/graphics/pstricks/contrib/pst-fill/doc/pst-fill-doc.bib
@@ -0,0 +1,168 @@
+@STRING{tugboat = {TUGboat} }
+@STRING{beiprogramm = {{\TeX}-Beiprogramm} }
+@STRING{bretter = {Bretter, die die Welt bedeuten} }
+@STRING{dtk = {{D}ie {\TeX}nische {K}om{\"o}die} }
+@STRING{editorial = {Editorial} }
+@STRING{fremdebuehne = {Von fremden B{\"u}hnen} }
+@STRING{fundus = {Aus dem Fundus} }
+@STRING{hinterbuehne = {Hinter der B{\"u}hne} }
+@STRING{leserbrief = {Leserbrief(e)} }
+@STRING{magazin = {Magazin} }
+@STRING{rezension = {Rezensionen} }
+@STRING{schonimmer = {Was Sie schon immer {\"u}ber {\TeX} wissen wollten \dots} }
+@STRING{theaterkasse = {Von der Theaterkasse} }
+@STRING{theatertage = {{\TeX}-Theatertage} }
+
+@manual{PostScript95,
+author= {Adobe Systems~Incorporated},
+title = {PostScript Language Reference Manual},
+publisher = {Addison-Wesley},
+edition=2,
+date ={1995}
+}
+
+@article{Bolek98,
+author={Piotr Bolek},
+title={\MP{} and patterns},
+journal = tugboat,
+volume=19,
+number=3,
+pages= {276--283},
+date = {1998-09},
+}
+%
+@article{MLgraphTSI,
+author={Emmanuel Chailloux and Guy Cousineau and Ascánder Suárez},
+title={Programmation fonctionnelle de graphismes pour la production
+d'illustrations techniques},
+journal={Technique et science informatique},
+volume=15,
+number=7,
+pages={977--1007},
+date= {1996},
+}
+%
+@book{Deledicq97,
+author={André Deledicq},
+title={Le monde des pavages},
+Publisher={ACL Editions},
+date={1997},
+}
+%
+@article{EsperetGirou98,
+author={Philippe Esperet and Denis Girou},
+title={Coloriage du pavage dit de Truchet},
+journal={Cahiers GUTenberg},
+Number=31,
+pages={ 5--18},
+date={1998-12},
+}
+
+@article{Girou94,
+ author = {Denis Girou},
+ title = {Pr\'esentation de {PST}ricks},
+ journal = {Cahier {GUT}enberg},
+ year = 1994,
+ volume = {16},
+ month = apr,
+ pages = {21-70},
+}
+
+@book{LGC97,
+author = {Michel Goosens and Frank Mittelbach and Sebastian Rahtz and Dennis Roegel and Herbert Vo\ss},
+ title = {The {\LaTeX} {G}raphics {C}ompanion},
+ publisher = {{Addison-Wesley Publishing Company}},
+ edition = {2},
+ year = {2007},
+ location = {Boston, Mass.}
+}
+
+@book{GS87,
+author={Branko Grünbaum and Geoffrey Shephard},
+title= {Tilings and Patterns},
+publisher={Freeman and Company},
+date={1987},
+}
+@book{Hoenig97,
+author= {Alan Hoenig},
+title= {\TeX{} Unbound: \LaTeX{} \& \TeX{}},
+subtitle={Strategies, Fonts, Graphics, and More},
+publisher={Oxford University Press},
+date={1997},
+}
+%
+@ctan{XYpic,
+title = {The Xypic package},
+subtitle = {Flexible diagramming macros},
+author = {Rose, Kristoffer H. and Moore, Ross},
+url = {https://ctan.org/pkg/xypic},
+urldate = {2021-09-30},
+date = {},
+version = {3.8.9},
+}
+%
+@article{LAAN96,
+author= {Kees van der Laan},
+title= {Paradigms: Just a little bit of PostScript},
+journal={MAPS},
+volume =17,
+pages = {137--150},
+date = {1996},
+}
+%
+@article{LAAN97,
+author= {Kees van der Laan},
+title= {Tiling in PostScript and \MF{} -- Escher's
+wink},
+journal={MAPS},
+volume =19,
+number=2,
+pages = {39--67},
+date = {1997},
+}
+
+@ctan{vanZandt93,
+ Title = {PSTricks -- {\PS} macros for {G}eneric \TeX},
+ author = {Timothy Van Zandt and Herbert Voß} ,
+ date = 2016,
+ url = {http://PSTricks.tug.org/},
+ urldate={2016-04-18},
+}
+%
+@article{vanZandtGirou94,
+ author = {Timothy Van Zandt and Denis Girou},
+ title = {Inside PSTricks},
+ journal = {TUGboat},
+ year = {1994},
+ volume = {15},
+ month = sep,
+ pages = {239--246}
+}
+
+%
+@Book{voss07,
+ author = {Herbert Vo\ss{}},
+ title = {\texttt{PSTricks} -- {G}rafik f\"ur \TeX{} und \LaTeX},
+ edition = {7},
+ publisher = {DANTE and Lehmanns Media},
+ year = {2016},
+ location = {Heidelberg and Berlin}
+}
+
+@Book{PSTricksE,
+ author = {Herbert Vo\ss{}},
+ title = {\texttt{PSTricks} -- {G}raphics and {P}ost{S}cript for \LaTeX},
+ edition = {1},
+ publisher = {UIT},
+ year = {2011},
+ location = {Cambridge -- UK}
+}
+%
+@jornal{Wang65,
+author= {Hao Wang},
+title={Games, Logic and Computers},
+jpurnal={Scientific American},
+pages={98--106},
+date ={1965-11},
+}
+
diff --git a/graphics/pstricks/contrib/pst-fill/doc/pst-fill-doc.pdf b/graphics/pstricks/contrib/pst-fill/doc/pst-fill-doc.pdf
new file mode 100644
index 0000000000..4e2abf14df
--- /dev/null
+++ b/graphics/pstricks/contrib/pst-fill/doc/pst-fill-doc.pdf
Binary files differ
diff --git a/graphics/pstricks/contrib/pst-fill/doc/pst-fill-doc.tex b/graphics/pstricks/contrib/pst-fill/doc/pst-fill-doc.tex
new file mode 100644
index 0000000000..edcbfdd308
--- /dev/null
+++ b/graphics/pstricks/contrib/pst-fill/doc/pst-fill-doc.tex
@@ -0,0 +1,1238 @@
+\RequirePackage{pdfmanagement-testphase}
+\DeclareDocumentMetadata{}
+%% $Id: pst-fill-doc.tex 293 2021-10-01 11:24:25Z herbert $
+\documentclass[fontsize=11pt,english,BCOR=10mm,DIV=12,bibliography=totoc,parskip=false,
+ headings=small, headinclude=false,footinclude=false,oneside]{pst-doc}
+
+\usepackage{hvlogos,hvextern}
+\usepackage{pstricks,pst-grad}
+\usepackage{pst-text,pst-node}
+\usepackage[tiling]{pst-fill}
+
+\input random.tex
+
+\DeclareRobustCommand\cs[1]{\texttt{\char`\\#1}}
+\makeatletter
+\newcommand\acro[1]{\textsc{#1}\@}
+\def\CTAN{\acro{CTAN}}
+\let\texttub\textsl % % redefined in other situations
+\def\TUB{\texttub{TUGboat}}
+\def\TUG{\TeX\ \UG}
+\def\tug{\acro{TUG}}
+\def\UG{Users Group}
+\newcommand\CTANdirectory[1]{\expandafter\urldef\csname CTAN@#1\endcsname\path}
+\newcommand\CTANfile[1]{\expandafter\urldef\csname CTAN@#1\endcsname\path}
+\newcommand\CTANref[1]{\expandafter\@setref\csname CTAN@#1\endcsname\relax{#1}}
+\makeatother
+\CTANdirectory{mpattern}{graphics/metapost/macros/mpattern}
+\CTANdirectory{pstricks}{graphics/pstricks}
+\CTANdirectory{pst-fill.sty}{graphics/pstricks/latex/pst-fill.sty}
+\CTANdirectory{pst-fill}{graphics/pstricks/generic/pst-fill.tex}
+\CTANdirectory{Roegel}{graphics/metapost/contrib/macros/truchet}
+\CTANdirectory{xypic}{macros/generic/diagrams/xypic}
+%
+\definecolor{LemonChiffon}{rgb}{1.,0.98,0.8}
+\definecolor{LightBlue} {rgb}{0.8,0.85,0.95}
+\definecolor{PaleGreen} {rgb}{0.88,1,0.88}
+\definecolor{PeachPuff} {rgb}{1.0,0.85,0.73}
+%
+\newcommand{\FillPackage}{\texttt{`pst-fill'}}
+\newcommand{\XYpic}{%
+ \leavevmode\hbox{\kern-.1em X\kern-.3em\lower.4ex\hbox{Y\kern-.15em}-pic}}
+\psset{dimen=middle}
+%
+% % Translation in PSTricks from the one drawn by Emmanuel Chailloux and
+% % Guy Cousineau for the MLgraph system
+% % (see /ftp.ens.fr:/pub/unix/lang/MLgraph/version-2.1/MLgraph-refman.ps.gz)
+% % The kangaroo itself is reproduce from an original picture from Raoul Raba
+ \newcommand{\DimX}{2.47}
+ \newcommand{\DimY}{4.8}
+ \newcommand{\DimXDivTwo}{1.235}
+%
+ \newcommand\KangarooItself[1]{%
+ \pspolygon[fillstyle=solid,fillcolor=#1]%
+ (52.5,68)(55,72.5)(55.8,76.5)(56.8,79.8)(58.2,83)(60,85.8)(61.5,86.5)
+ (64,87)(66,87.5)(67.8,87.3)(70,87)(71.5,87.3)(73,88)(74.7,88.5)
+ (76,90.3)(77,91.5)(72.8,93.8)(69,96)(64.5,99)(59.4,103)(56.2,106.3)
+ (53,110.5)(49.5,115.5)(47.2,119.9)(45.7,126)(43.2,123)(41.5,121)(37.5,125)
+ (37,122.5)(36.8,120)(37,117)(37.6,113.5)(38.6,110)(40,106.3)(42,102.3)
+ (43.5,99.5)(45,97)(46.2,94)(46.8,91.7)(47.2,88)(47,83.5)(46.3,80.8)
+ (45.3,78.5)(42.5,76.5)(39.5,75.8)(36,75.9)(33,75.9)(29,76.2)(26,77)
+ (22.3,77.5)(18,78.4)(12.8,79.3)(8.6,80)(5.5,80.3)(3,80.5)(0,80)
+ (-5.2,78.5)(-9,76.3)(-11.2,74.8)(-13,72.5)(-16.5,68)(-16.5,68)(-19.5,62.5)
+ (-22,58)(-25.5,53)(-29,48.5)(-32.5,45)(-36,42)(-39,39.5)(-44,37)
+ (-49,35)(-51,34)(-53.5,34.5)(-55.5,36)(-56.5,38)(-56.5,40.5)(-55,41.5)
+ (-53.5,41)(-51.5,41)(-50.5,43)(-50.5,44.5)(-51,47)(-51.5,47.2)(-56.5,47)
+ (-58.5,46.5)(-60,44.7)(-62,42.3)(-63,39.5)(-63.5,36.3)(-63.5,33)(-63.1,29.5)
+ (-61.5,26)(-58,23.6)(-54,22.2)(-50.7,22)(-47.5,22)(-44.5,22.3)(-41,23.5)
+ (-36.8,25.8)(-33,28)(-28.5,31)(-23.4,35)(-20.2,38.3)(-17,42.5)(-13.5,47.5)
+ (-11.2,51.9)(-9.7,58)(-7.2,55)(-5.5,53)(-1.5,57)(-1,54.5)(-0.8,52)
+ (-1,49)(-1.6,45.5)(-2.6,42)(-4,38.3)(-6,34.3)(-7.5,31.5)(-9,29)
+ (-10.2,26)(-10.8,23.7)(-11.2,20)(-11,15.5)(-10.3,12.8)(-9.3,10.5)(-6.5,8.5)
+ (-3.5,7.8)(0,7.9)(3,7.9)(7,8.2)(10,9)(13.7,9.5)(18,10.4)
+ (23.2,11.3)(27.4,12)(30.5,12.3)(33,12.5)(36,12)(41.2,10.5)(45,8.3)
+ (47.2,6.8)(49,4.5)(52.5,0)(50,4.5)(49.2,8.5)(48.2,11.8)(46.8,15)
+ (45,17.8)(43.5,18.5)(41,19)(39,19.5)(37.2,19.3)(35,19)(33.5,19.3)
+ (32,20)(30.3,20.5)(29,22.3)(28,23.5)(28,23.5)(24.5,22.3)(21.5,22)
+ (18.3,22)(15,22.2)(11,23.6)(7.5,26)(5.9,29.5)(5.5,33)(5.5,36.3)
+ (6,39.5)(7,42.3)(9,44.7)(10.5,46.5)(12.5,47)(17.5,47.2)(18,47)
+ (18.5,44.5)(18.5,43)(17.5,41)(15.5,41)(14,41.5)(12.5,40.5)(12.5,38)
+ (13.5,36)(15.5,34.5)(18,34)(20,35)(25,37)(30,39.5)(33,42)
+ (36.5,45)(40,48.5)(43.5,53)(47,58)(49.5,62.5)(52.5,68)
+ \pscircle*[linecolor=white](58.2,98.3){2\psxunit}
+\pscircle*(58.2,97.3){\psxunit}
+% Mouth
+\psline(71.5,88)(70,89.3)(68.5,90.3)(67,91.9)%
+% Tear
+\psline(42,121)(45,118)(47,115.3)(48.5,112.7)(50,110)(51.8,106.5)
+ (52.5,103.7)(53,100.5)%
+\pspolygon(41.2,115.8)(43.2,114.7)(45,112.5)(47,109.8)(48,107)(49.5,104.2)%
+ (50.5,101.6)(51,98.5)(47.7,100.6)(46,102.2)(44.8,104)(43.5,106)
+ (42.5,108)(41.7,110.5)(41,113.2)}
+%
+\newcommand\Kangaroo[1]{%
+ \begin{pspicture}(\DimX,\DimY)
+ \psset{unit=0.035278cm}%
+ \KangarooItself{#1}%
+ \end{pspicture}}
+%
+\newcommand\KangarooPstChart[1]{{%
+ \psset{xunit=0.006784,yunit=0.00735,linewidth=0.01}%
+ \begin{pspicture}(-65.5,0)(82,126)%
+ \KangarooItself{#1}%
+ \end{pspicture}}}
+%
+%
+% For the possible index and changes log
+\setlength{\columnseprule}{0.6pt}
+%
+% Beginning of the documentation itself
+\title{\texttt{pst-fill}\\A PSTricks package for filling and tiling areas}
+%\author{Timothy Van Zandt\thanks{\protect\url{tvz@econ.insead.fr}. (documentation by
+\author{Timothy Van Zandt\\Denis Girou\\ Herbert Voß}
+%
+%\date{\shortstack{\today --- Version 1.00\\
+% {\small Documentation revised \today}}}
+
+\addbibresource{\jobname.bib}
+
+\begin{document}
+\settitle
+\tableofcontents
+%
+\begin{abstract}
+ \FillPackage{} is a PSTricks \cite{vanZandt93},\cite{Girou94},\cite{vanZandtGirou94},
+\cite{Hoenig97},\cite{LGC97}
+package to draw easily
+ various kinds of filling and tiling of areas. It is also a good example of
+ the great power and flexibility of PSTricks, as in fact it is a very short
+ program (it body is around 200~lines long) but nevertheless really powerful.
+
+ It was written in 1994 by Timothy \textsc{van Zandt} but
+ publicly available only in PSTricks 97 and without any documentation.
+ We describe here the version \emph{97 patch 2} of December 12, 1997, which
+ is the original one modified by myself to manage \emph{tilings} in the
+ so-called \emph{automatic} mode. This article would like to serve both of
+ reference manual and of user's guide.
+%
+This package is available on \CTAN{} in the
+ \texttt{graphics/pstricks} directory (files \texttt{latex/pst-fill.sty} and
+ \texttt{generic/pst-fill.tex}).
+\end{abstract}
+%
+\section{Introduction}
+
+ Here we will refer as \emph{filling} as the operation which consist to fill
+a defined area by a pattern (or a composition of patterns). We will refer as
+\emph{tiling} as the operation which consist to do the same thing, but with
+the control of the starting point, which is here the upper left corner.
+The pattern is positioned relatively to this point. This make an essential
+difference between the two modes, as without control of the starting point we
+can't draw \emph{tilings} (sometimes called \emph{tesselations}) as used in
+many fields of Art and Science%
+\footnote{For an extensive presentation of tilings, in their history and usage
+in many fields, see the reference book \cite{GS87}.
+
+In the \TeX{} world, few work was done on tilings. You can look at the
+\emph{tile} extension of the \XYpic{} package \cite{XYpic}, at the articles of
+Kees \textsc{van der Laan} \cite[paragraph 7]{LAAN96} (the tiling was in
+fact directly done in PostScript) and \cite{LAAN97}, at the \MP{} program
+(available on \path{CTAN:graphics/metapost/contrib/macros/truchet}) by Denis \textsc{Roegel} for the
+\textsc{Truchet} contest in 1995 \cite{EsperetGirou98} and at the \MP{}
+package \cite{Bolek98} to draw patterns, which have a strong connection with
+tilings.}
+
+Nevertheless, as tilings are a wide and difficult field in mathematics, this
+package is limited to simple ones, mainly \emph{monohedral} tilings with one
+prototile (which can be composite, see section \ref{sec:KindTiles}). With some
+experience and wiliness we can do more and obtained easily rather
+sophisticated results, but obviously hyperbolic tilings like the famous
+\textsc{Escher} ones or aperiodic tilings like the \textsc{Penrose} ones are
+not in the capabilities of this package. For more complex needs, we must used
+low level and more painfull technics, with the basic \cs{multido}
+and \cs{multirput} macros.
+
+
+\newcommand\Square{\begin{pspicture}(1,1)\psframe[dimen=middle](1,1)\end{pspicture}}
+\newcommand\Tiling[2][]{%
+ \begin{pspicture}#2
+ \psframe[fillstyle=boxfill,#1]#2
+\end{pspicture}}
+
+
+\section{Package history and description of it two different modes}
+%
+ As already said, this package was written in 1994 by Timothy \textsc{van
+Zandt}. Two modes were defined, called respectively \emph{manual} and
+\emph{automatic}. For both, the pattern is generated on contiguous positions in
+a rather large area which include the region to fill, later cut to the
+required dimensions by clipping mechanism. In the first mode, the pattern is
+explicitely inserted in the PostScript file each time. In the second one, the
+result is the same but with an unique explicit insertion of the pattern and a
+repetition done by PostScript. Nevertheless, in this method, the control of
+the starting point was loosed, so it allowed only to \emph{fill} a region and
+not to \emph{tile} it.
+
+Between the two modes, \emph{tiling} and filling is a difference: for filling the current point
+is taken into account and two identical objects in a line may differ in the output.
+
+\pstFillSetDefaults
+ See the difference between the two modes, \emph{tiling}:
+{\psset{unit=0.5}
+ \psboxfill{\begin{pspicture}(1,1)\psframe[dimen=middle](1,1)\end{pspicture}}
+ \begin{pspicture}(3,3.3)
+ \psframe[fillstyle=boxfill](3,3)
+ \end{pspicture}
+}
+and \emph{filling}:
+{%
+\makeatletter
+\pst@def{BoxFill}<%
+ gsave
+ gsave \tx@STV CM grestore dtransform CM idtransform
+ abs /h ED abs /w ED
+ pathbbox
+ h div round 2 add cvi /y2 ED
+ w div round 2 add cvi /x2 ED
+ h div round 2 sub cvi /y1 ED
+ w div round 2 sub cvi /x1 ED
+ /y2 y2 y1 sub def
+ /x2 x2 x1 sub def
+ CP
+ y1 h mul sub neg /y1 ED
+ x1 w mul sub neg /x1 ED
+ clip
+ y2 {
+ /x x1 def
+ x2 {
+ save CP x y1 T moveto Box restore
+ /x x w add def
+ } repeat
+ /y1 y1 h add def
+ } repeat
+ currentpoint currentfont grestore setfont moveto>
+ \makeatother
+%
+ \psset{unit=0.5}
+ \psboxfill{\begin{pspicture}(1,1)\psframe[dimen=middle](1,1)\end{pspicture}}
+ \begin{pspicture}(3,3.3)
+ \psframe[fillstyle=boxfill](3,3)
+ \end{pspicture}
+ or
+ \begin{pspicture}(3,3.3)
+ \psframe[fillstyle=boxfill](3,3)
+ \end{pspicture}
+}
+as we can see that initial position is arbitrary and dependent of
+the current point.
+
+
+It's clear that usage of filling is very restrictive comparing to tiling,
+as desired effects required very often the possibility to control the starting
+point. So, this mode was of limited interest, but unfortunately the
+\emph{manual} one has the very big disadvantage to require very huge amounts
+of ressources, mainly in disk space and consequently in printing time.
+A small tiling can require sometimes several megabytes in \emph{manual} mode!
+So, it was very often not really usable in practice.
+
+It is why I modified the code, to allow tilings in \emph{automatic} mode,
+controlling in this mode too the starting point. And most of the time, that is
+to say if some special options are not used, the tiling is done exactly in the
+region described, which make it faster. So there is no more reason to use the
+\emph{manual} mode, apart very special cases where \emph{automatic} one cannot
+work, as explained later -- currently, I know only one case.
+
+ To load this modified \emph{automatic} mode, with \LaTeX{} use
+simply:\newline
+\verb+\usepackage[tiling]{pst-fill}+\newline
+and in plain \TeX{} after:\newline
+\verb+\input{pst-fill}+\newline
+add the following definition:\newline
+\verb+\def\PstTiling{1}+
+
+To obtain the original behaviour, just don't use the \emph{tiling} optional
+keyword at loading.
+
+Take care than in \emph{tiling} mode, I introduce also some other changes.
+First I define aliases on some parameter names for consistancy (all specific
+parameters will begin by the \texttt{fill} prefix in this case) and I change
+some default values, which were not well adapted for tilings (\Lkeyword{fillsep}
+is set to 0 and as explained \Lkeyword{fillsize} set to \Lkeyval{auto}). I rename
+\Lkeyword{fillcycle} to \Lkeyword{fillcyclex}. I also restore normal way so that
+the frame of the area is drawn and all line (\Lkeyword{linestyle},
+\Lkeyword{linecolor}, \texttt{doubleline}, etc.) parameters are now active (but
+there are not in non \emph{tiling} mode). And I also introduce new parameters
+to control the tilings (see below).
+
+ \textbf{In all the following examples, we will consider only the
+\Lkeyword{tiling} mode.}
+%
+ To do a tiling, we have just to define the pattern with the
+\Lcs{psboxfill} macro and to use the new \Lkeyword{fillstyle}
+\Lkeyval{boxfill}.
+%
+ Note that tilings are drawn from left to right and top to bottom, which can
+have an importance in some circonstances.
+%
+ PostScript programmers can be also interested to know that, even in the
+\emph{automatic} mode, the iterations of the pattern are managed directly by
+the PostScript code of the package which used only PostScript Level 1
+operators. The special ones introduced in Level 2 for drawing of patterns
+\cite[section 4.9]{PostScript95} are not used.
+%
+ And first, for conveniance, we define a simple \Lcs{Tiling} macro, which
+will simplify our examples:
+%
+\begin{verbatim}
+ \newcommand{\Tiling}[2][]{%
+ \begin{pspicture}#2
+ \psframe[fillstyle=boxfill,#1]#2
+ \end{pspicture}}
+\end{verbatim}
+%
+\subsection{Parameters}
+%
+ There are \textbf{14} specific parameters available to change the way the
+filling/tiling is defined, and one debugging option.
+%
+\begin{description}
+ \item [\Lkeyword{fillangle} (real)\hfill :] the value of the rotation
+ applied to the patterns (\emph{Default:~0}).
+\end{description}
+%
+\pstFillSetDefaults
+%
+ In this case, we must force the tiling area to be notably larger than the
+area to cover, to be sure that the defined area will be covered after rotation.
+\begin{LTXexample}[width=4cm,pos=l]
+\newcommand\Cross{\begin{pspicture}(1,1)
+ \psline[linecolor=red,dimen=middle](0,0.5)(1,0.5)
+ \psline[linecolor=blue,dimen=middle](0.5,0)(0.5,1)
+\end{pspicture}}
+\psset{unit=0.5cm}
+\psboxfill{\Cross}
+\Tiling[fillangle=0]{(3,3)} \\[2pt]
+\Tiling[fillangle=45]{(3,3)}\\[2pt]
+\Tiling[fillangle=-60]{(3,3)}
+\end{LTXexample}
+
+
+\begin{description}
+ \item[\Lkeyword{fillsepx} (real$\|$dim) :] value of the horizontal
+ separation between consecutive patterns (\emph{Default:~0 for
+ tilings\footnote{This option is not part of the original package
+ and is available only if the
+ \texttt{tiling} keyword is used when loading the package.} , 2pt otherwise}).
+ \item [\Lkeyword{fillsepy} (real$\|$dim)\hfill :] value of the vertical
+ separation between consecutive patterns (\emph{Default:~0 for
+ ti\-lings\footnote{ebd.}, 2pt otherwise}).
+%\addtocounter{footnote}{-1}
+ \item [\Lkeyword{fillsep} (real$\|$dim)\hfill :] value of horizontal and
+ vertical separations between consecutive patterns (\emph{Default:~0 for
+ tilings\footnote{ebd.}, 2pt otherwise}).
+\end{description}
+
+ These values can be negative, which allow the tiles to overlap.
+
+\begin{LTXexample}[width=\linewidth]
+\psset{unit=0.5cm}
+\psboxfill{\Square}
+\Tiling[fillsepx=2mm]{(3,3)} \quad
+\Tiling[fillsepy=1mm]{(3,3)} \quad
+\Tiling[fillsep=0.5]{(3,3)} \quad
+\Tiling[fillsep=-0.5]{(3,3)}
+\end{LTXexample}
+
+
+
+
+\begin{description}
+ \item [\Lkeyword{fillcyclex}\footnotemark\ (integer)\hfill :] Shift
+ coefficient applied to each row (\emph{Default:~0}).
+ \footnote{It was \texttt{fillcycle} in the original version.}
+ \item [\Lkeyword{fillcycley}\footnotemark\ (integer)\hfill :] Same thing for
+ columns (\emph{Default:~0}).
+ \item [\Lkeyword{fillcycle}\footnote{ebd.} (integer)\hfill :] Allow to fix
+ both \Lkeyword{fillcyclex} and \Lkeyword{fillcycley} directly to the same value
+ (\emph{Default:~0}).
+\end{description}
+
+ For instance, if \Lkeyword{fillcyclex} is 2, the second row of patterns will
+be horizontally shifted by a factor of $\frac{1}{2}=0.5$, and by a factor of
+0.333 if \Lkeyword{fillcyclex} is 3, etc.). These values can be negative.
+
+\begin{LTXexample}[width=\linewidth]
+\psset{unit=0.5}
+\psboxfill{\Square}
+\newcommand\TilingA[1]{\Tiling[fillcyclex=#1]{(3,3)}}
+\TilingA{0} \TilingA{1} \quad
+\TilingA{2} \TilingA{3}\quad
+\TilingA{4} \TilingA{5}\quad
+\TilingA{6} \TilingA{-3}\\[3mm]
+\Tiling[fillcycley=2]{(3,3)}\quad
+\Tiling[fillcycley=3]{(3,3)}\quad
+\Tiling[fillcycley=-3]{(3,3)}\quad
+\Tiling[fillcycle=2]{(3,3)}
+\end{LTXexample}
+
+\begin{description}
+ \item [\Lkeyword{fillmovex}\footnotemark\ (real$\|$dim)\hfill :] value of the
+ horizontal moves between consecutive patterns (\emph{Default:~0}).
+ \item [\Lkeyword{fillmovey}\footnotemark\ (real$\|$dim)\hfill :] value of the
+ vertical moves between consecutive patterns (\emph{Default:~0}).
+ \item [\Lkeyword{fillmove}\footnotemark\ (real$\|$dim)\hfill :] value of
+ horizontal and vertical moves between consecutive patterns
+ (\emph{Default:~0}).
+\end{description}
+
+ These parameters allow the patterns to overlap and to draw some special
+kinds of tilings. They are implemented only for the \emph{automatic} and
+\emph{tiling} modes and their values can be negative.
+
+ In some cases, the effect of these parameters will be the same that with the
+\texttt{fillcycle?} ones, but you can see that it is not true for some other
+values.
+
+\begin{LTXexample}
+\psset{unit=0.5}
+\psboxfill{\Square}
+\Tiling[fillmovex=0.5]{(3,3)}\quad
+\Tiling[fillmovey=0.5]{(3,3)}\quad
+\Tiling[fillmove=0.5]{(3,3)}\quad
+\Tiling[fillmove=-0.5]{(3,3)}
+\end{LTXexample}
+
+\begin{description}
+ \item [\Lkeyword{fillsize}
+ (auto$\|$\{(real$\|$dim,real$\|$dim)(real$\|$dim,real$\|$dim)\}) :] The
+ choice of \emph{automatic} mode or the size of the area in \emph{manual}
+ mode. If first pair values are not given, (0,0) is used. (\emph{Default:
+ auto when \emph{tiling} mode is used, {(-15cm,-15cm)(15cm,15cm)}
+ otherwise}).
+\end{description}
+
+ As explained in the introduction, the \emph{manual} mode can require very
+huge amount of computer ressources. So, it usage is to discourage in front off
+the \emph{automatic} mode. It seems only useful in special circonstances, in
+fact when the \emph{automatic} mode failed, which is known only in one case,
+for some kinds of EPS files, as the ones produce by dump of portions of
+screens (see \ref{sec:GraphicFiles}).
+
+\begin{description}
+ \item [\Lkeyword{fillloopaddx}\footnotemark\ (integer)\hfill :] number of
+ times the pattern is added on left and right positions (\emph{Default:~0}).
+ \item [\Lkeyword{fillloopaddy}\footnotemark\ (integer)\hfill :] number of
+ times the pattern is added on top and bottom positions (\emph{Default:~0}).
+ \item [\Lkeyword{fillloopadd}\footnotemark\ (integer)\hfill :] number of
+ times the pattern is added on left, right, top and bottom positions
+ (\emph{Default:~0}).
+\end{description}
+
+ These parameters are only useful in special circonstances, as for complex
+patterns when the size of the rectangular box used to tile the area doesn't
+correspond to the pattern itself (see an example in Figure~\ref{fig:Sheeps})
+and also sometimes when the size of the pattern is not a divisor of the size
+of the area to fill and that the number of loop repeats is not properly
+computed, which can occur.
+
+ They are implemented only for the \emph{tiling} mode.
+
+
+
+\begin{description}
+ \item [\Lkeyword{PstDebug}\footnotemark\ (integer, 0 or 1)\hfill :] to
+ require to see the exact tiling done, without clipping (\emph{Default:~0}).
+\end{description}
+
+
+ It's mainly useful for debugging or to understand better how the tilings
+are done. It is implemented only for the \emph{tiling} mode.
+
+
+%\begin{LTXexample}[width=\linewidth]
+\psset{unit=0.3cm,PstDebug=1}
+\psboxfill{\Square}
+\psset{linewidth=1mm}
+\Tiling{(2,2)}\hfill \Tiling[fillcyclex=2]{(2,2)}\hfill\Tiling[fillmove=0.5]{(2,2)}
+%\end{LTXexample}
+
+\begin{lstlisting}
+\psset{unit=0.3cm,PstDebug=1}
+\psboxfill{\Square}
+\psset{linewidth=1mm}
+\Tiling{(2,2)}\hfill \Tiling[fillcyclex=2]{(2,2)}\hfill\Tiling[fillmove=0.5]{(2,2)}
+\end{lstlisting}
+
+\psset{unit=1cm,PstDebug=0,linewidth=0.8pt}
+
+\section{Examples}
+
+ In fact this unique \Lcs{psboxfill} macro allow a lot a variations and
+different usages. We will try here to demonstrate this.
+
+\subsection{Kind of tiles}
+\label{sec:KindTiles}
+
+ Of course, we can access to all the power of PSTricks macros to define the
+\emph{tiles} (\emph{patterns}) used. So, we can define complicated ones.
+
+ Here we give four other Archimedian tilings (those built with only some
+regular polygons) among the twelve existing, first discovered completely by
+Johanes \textsc{Kepler} at the beginning of 17th century \cite{GS87}, the two
+other \emph{regular} ones with the tiling by squares, formed by a unique
+regular polygon, and two other formed by two different regular polygons.
+
+\begin{LTXexample}[pos=t]
+ \newcommand{\Triangle}{%
+ \begin{pspicture}(1,1)
+ \pstriangle[dimen=middle](0.5,0)(1,1)
+ \end{pspicture}}
+ \newcommand\Hexagon{
+ \begin{pspicture}(0.866,0.75)% sin(60)=0.866
+ \pspolygon[dimen=middle]% % Hexagon
+ (0.5;30)(0.5;90)(0.5;150)(0.5;210)(0.5;270)(0.5;330)
+ \end{pspicture}}
+ \psset{unit=0.5cm}
+ \psboxfill{\Triangle}
+ \Tiling{(4,4)}\qquad
+ \Tiling[fillcyclex=2]{(4,4)}\qquad
+ \psboxfill{\Hexagon}
+ \Tiling[fillcyclex=2,fillloopaddy=1]{(5,5)}
+\end{LTXexample}
+
+\begin{LTXexample}[pos=t]
+ \newcommand{\ArchimedianA}{%Archimedian tiling 3^2.4.3.4
+ \psset{dimen=middle}
+ % sin(60)=0.866
+ \begin{pspicture}(1.866,1.866)
+ \psframe(1,1)
+ \psline(1,0)(1.866,0.5)(1,1)(0.5,1.866)(0,1)(-0.866,0.5)
+ \psline(0,0)(0.5,-0.866)
+ \end{pspicture}}
+ \newcommand{\ArchimedianB}{% Archimedian tiling 4.8^2
+ \psset{dimen=middle,unit=1.5cm}
+ % sin(22.5)=0.3827 ; cos(22.5)=0.9239
+ \begin{pspicture}(1.3066,0.6533)
+ \SpecialCoor
+ % Octogon
+ \pspolygon(0.5;22.5)(0.5;67.5)(0.5;112.5)(0.5;157.5)
+ (0.5;202.5)(0.5;247.5)(0.5;292.5)(0.5;337.5)
+ \end{pspicture}}
+
+ \psset{unit=0.5cm}
+ \psboxfill{\ArchimedianA}
+ \Tiling[fillmove=0.5]{(7,7)}\hfill
+ \psboxfill{\ArchimedianB}
+ \Tiling[fillcyclex=2,fillloopaddy=1]{(7,7)}
+\end{LTXexample}
+
+ We can of course tile an area arbitrarily defined. And with the
+\Lkeyword{addfillstyle} parameter\footnote{Introduced in PSTricks 97.}, we can
+easily mix the \Lkeyword{boxfill} style with another one.
+
+\begin{LTXexample}[width=6cm]
+ \psset{unit=0.5cm,dimen=middle}
+ \psboxfill{%
+ \begin{pspicture}(1,1)
+ \psframe(1,1)
+ \pscircle(0.5,0.5){0.25}
+ \end{pspicture}}
+ \begin{pspicture}(4,6)
+ \pspolygon[fillstyle=boxfill,fillsep=0.25](0,1)(1,4)(4,6)(4,0)(2,1)
+ \end{pspicture}\hspace{1em}
+ \begin{pspicture}(4,4)
+% \pscircle[linestyle=none,fillstyle=solid,fillcolor=yellow,fillsep=0.5,
+% addfillstyle=boxfill](2,2){2}
+ \end{pspicture}
+\end{LTXexample}
+%
+ Various effects can be obtained, sometimes complicated ones very easily, as
+in this example reproduced from one shown by Slavik \textsc{Jablan} in the
+field of \emph{OpTiles}, inspired by the \emph{Op-art}:
+
+\begin{LTXexample}[pos=t]
+\newcommand\ProtoTile{%
+ \begin{pspicture}(1,1)%%1/12=0.08333
+ \psset{linestyle=none,linewidth=0,
+ hatchwidth=0.08333\psunit,hatchsep=0.08333\psunit}
+ \psframe[fillstyle=solid,fillcolor=black,addfillstyle=hlines,hatchcolor=white](1,1)
+ \pswedge[fillstyle=solid,fillcolor=white,addfillstyle=hlines]{1}{0}{90}
+ \end{pspicture}}
+\newcommand\BasicTile{%
+ \begin{pspicture}(2,1)
+ \rput[lb](0,0){\ProtoTile}\rput[lb](1,0){\psrotateleft{\ProtoTile}}
+ \end{pspicture}}
+\ProtoTile\hfill\BasicTile\hfill
+\psboxfill{\BasicTile}
+\Tiling[fillcyclex=2]{(4,4)}
+\end{LTXexample}
+
+ It is also directly possible to surimpose several different tilings. Here is
+the splendid visual proof of the \textsc{Pytha\-gore} theorem done by the arab
+mathematician \textsc{Annairizi} around the year 900, given by superposition
+of two tilings by squares of different sizes.
+
+\begin{LTXexample}[pos=t]
+\psset{unit=1.5,dimen=middle}
+\begin{pspicture*}(3,3)
+ \psboxfill{\begin{pspicture}(1,1)
+ \psframe(1,1)\end{pspicture}}
+ \psframe[fillstyle=boxfill](3,3)
+ \psboxfill{\begin{pspicture}(1,1)
+ \rput{-37}{\psframe[linecolor=red](0.8,0.8)}
+ \end{pspicture}}
+ \psframe[fillstyle=boxfill](3,4)
+ \pspolygon[fillstyle=hlines,hatchangle=90](1,2)(1.64,1.53)(2,2)
+\end{pspicture*}
+\end{LTXexample}
+
+ In a same way, it is possible to build tilings based on figurative patterns,
+in the style of the famous \textsc{Escher} ones. Following an example of
+Andr\'e \textsc{Deledicq} \cite{Deledicq97}, we first show a simple tiling of
+the \emph{p1} category (according to the international classification of the
+17~symmetry groups of the plane first discovered by the russian
+crystalographer Jevgraf \textsc{Fedorov} at the end of the 19th century):
+
+\begin{LTXexample}[pos=t]
+ \newcommand\SheepHead[1]{%
+ \begin{pspicture}(3,1.5)
+ \pscustom[liftpen=2,fillstyle=solid,fillcolor=#1]{%
+ \pscurve(0.5,-0.2)(0.6,0.5)(0.2,1.3)(0,1.5)(0,1.5)
+ (0.4,1.3)(0.8,1.5)(2.2,1.9)(3,1.5)(3,1.5)(3.2,1.3)
+ (3.6,0.5)(3.4,-0.3)(3,0)(2.2,0.4)(0.5,-0.2)}
+ \pscircle*(2.65,1.25){0.12\psunit} %Eye
+ \psccurve*(3.5,0.3)(3.35,0.45)(3.5,0.6)(3.6,0.4)% Muzzle
+ % Mouth
+ \pscurve(3,0.35)(3.3,0.1)(3.6,0.05)
+ % Ear
+ \pscurve(2.3,1.3)(2.1,1.5)(2.15,1.7)\pscurve(2.1,1.7)(2.35,1.6)(2.45,1.4)
+ \end{pspicture}}
+ \psboxfill{\psset{unit=0.5}\SheepHead{yellow}\SheepHead{cyan}}
+ \Tiling[fillcyclex=2,fillloopadd=1]{(10,5)}
+\end{LTXexample}
+\label{fig:Sheeps}
+
+ Now a tiling of the \emph{pg} category (the code for the kangaroo itself is
+too long to be shown here, but has no difficulties ; the kangaroo is reproduce
+from an original picture from Raoul \textsc{Raba} and here is a translation in
+PSTricks from the one drawn by Emmanuel \textsc{Chailloux} and Guy
+\textsc{Cousineau} for their MLgraph system \cite{MLgraphTSI}):
+
+\begin{LTXexample}[pos=t]
+\psboxfill{\psset{unit=0.4}
+ \Kangaroo{yellow}\Kangaroo{red}\Kangaroo{cyan}\Kangaroo{green}%
+ \psscalebox{-1 1}{%
+ \rput(1.235,4.8){\Kangaroo{green}\Kangaroo{cyan}\Kangaroo{red}\Kangaroo{yellow}}}}
+ \Tiling[fillloopadd=1]{(10,6)}
+\end{LTXexample}
+
+ And here a \textsc{Wang} tiling \cite{Wang65}, \cite[chapter
+11]{GS87}, based on very simple tiles of the form of a square and composed
+of four colored triangles. Such tilings are built with only a matching color
+constraint. Despite of it simplicity, it is an important kind of tilings, as
+\textsc{Wang} and others used them to study the special class of
+\emph{aperiodic} tilings, and also because it was shown that surprisingly this
+tiling is similar to a \textsc{Turing} machine.
+
+\begin{LTXexample}[pos=t]
+ \newcommand{\WangTile}[4]{%
+ \begin{pspicture}(1,1)
+ \pspolygon*[linecolor=#1](0,0)(0,1)(0.5,0.5)
+ \pspolygon*[linecolor=#2](0,1)(1,1)(0.5,0.5)
+ \pspolygon*[linecolor=#3](1,1)(1,0)(0.5,0.5)
+ \pspolygon*[linecolor=#4](1,0)(0,0)(0.5,0.5)
+ \end{pspicture}}
+ \newcommand{\WangTileA}{\WangTile{cyan}{yellow}{cyan}{cyan}}
+ \newcommand{\WangTileB}{\WangTile{yellow}{cyan}{cyan}{red}}
+ \newcommand{\WangTileC}{\WangTile{cyan}{red}{yellow}{yellow}}
+ \newcommand{\WangTiles}[1][]{%
+ \begin{pspicture}(3,3) \psset{ref=lb}
+ \rput(0,2){\WangTileB} \rput(1,2){\WangTileA}%
+ \rput(2,2){\WangTileC} \rput(0,1){\WangTileC}%
+ \rput(1,1){\WangTileB} \rput(2,1){\WangTileA}
+ \rput(0,0){\WangTileA} \rput(1,0){\WangTileC}%
+ \rput(2,0){\WangTileB}
+ #1
+ \end{pspicture}}
+ \WangTileA\hfill\WangTileB\hfill\WangTileC\hfill
+ \WangTiles[{\psgrid[subgriddiv=0,gridlabels=0](3,3)}]\hfill
+ \psset{unit=0.4} \psboxfill{\WangTiles} \Tiling{(12,12)}
+\end{LTXexample}
+
+\subsection{External graphic files}
+\label{sec:GraphicFiles}
+
+ We can also fill an arbitrary area with an external image. We have only,
+as usual, to matter of the \emph{BoundingBox} definition if there is no one
+provided or if it is not the accurate one, as for the well known
+\texttt{tiger} picture part of the \texttt{ghostscript} distribution.
+
+\begin{LTXexample}[pos=t]
+ \psboxfill{%Strangely require x1=x2...
+ \begin{pspicture}(0,1)(0,4.1)
+ \includegraphics[bb=17 176 560 74,width=3cm]{images/tiger}
+ \end{pspicture}}
+ \Tiling{(6,6.2)}
+\end{LTXexample}
+
+ Nevertheless, there are some special files for which the \emph{automatic}
+mode doesn't work, specially for some files obtained by a screen dump, as in
+the next example, where a picture was reduced before it conversion in the
+\emph{Encapsulated PostScript} format by a screen dump utility. In this case,
+usage of the \emph{manual} mode is the only alternative, at the price of the
+real multiple inclusion of the EPS file. We must take care to specify the
+correct \texttt{fillsize} parameter, because otherwise the default values are
+large and will load the file many times, perhaps just really using few
+occurrences as the other ones would be clipped...
+
+\begin{LTXexample}[pos=t]
+ \psboxfill{\includegraphics{images/flowers}}
+ \begin{pspicture}(8,4)
+ \psellipse[fillstyle=boxfill,fillsize={(8,4)}](4,2)(4,2)
+ \end{pspicture}
+\end{LTXexample}
+
+\subsection{Tiling of characters}
+
+ We can also use the \cs{psboxfill} macro to fill the interior of characters
+for special effects like these ones:
+
+\begin{LTXexample}[pos=t]
+ \DeclareFixedFont{\bigsf}{T1}{phv}{b}{n}{4.5cm}
+ \DeclareFixedFont{\smallrm}{T1}{ptm}{m}{n}{3mm}
+ \psboxfill{\smallrm Since 182 days...}
+ \begin{pspicture*}(8,4)
+ \centerline{%
+ \pscharpath[fillstyle=gradient,gradangle=-45,
+ gradmidpoint=0.5,addfillstyle=boxfill,
+ fillangle=45,fillsep=0.7mm]
+ {\rput[b](0,0.1){\bigsf 2000}}}
+ \end{pspicture*}
+\end{LTXexample}
+
+\begin{LTXexample}[pos=t]
+ \DeclareFixedFont{\mediumrm}{T1}{ptm}{m}{n}{2cm}
+ \psboxfill{%
+ \psset{unit=0.1,linewidth=0.2pt}
+ \Kangaroo{PeachPuff}\Kangaroo{PaleGreen}%
+ \Kangaroo{LightBlue}\Kangaroo{LemonChiffon}%
+ \psscalebox{-1 1}{%
+ \rput(1.235,4.8){%
+ \Kangaroo{LemonChiffon}\Kangaroo{LightBlue}%
+ \Kangaroo{PaleGreen}\Kangaroo{PeachPuff}}}}%
+% A kangaroo of kangaroos...
+ \begin{pspicture}(8,2)
+ \pscharpath[linestyle=none,fillstyle=boxfill,fillloopadd=1]
+ {\rput[b](4,0){\mediumrm Kangaroo}}
+ \end{pspicture}
+\end{LTXexample}
+
+\subsection{Other kinds of usage}
+
+ Other kinds of usage can be imagined. For instance, we can use tilings in a
+sort of degenerated way to draw some special lines made by a unique or
+multiple repeating patterns. But it can be only a special dashed line, as here
+with three different dashes:
+
+\begin{LTXexample}[pos=t]
+ \newcommand{\Dashes}{%
+ \psset{dimen=middle}
+ \begin{pspicture}(0,-0.5\pslinewidth)(1,0.5\pslinewidth)
+ \rput(0,0){\psline(0.4,0)}%
+ \rput(0.5,0){\psline(0.2,0)}%
+ \rput(0.8,0){\psline(0.1,0)}
+ \end{pspicture}}
+
+ \newcommand{\SpecialDashedLine}[3]{%
+ \psboxfill{#3}
+ \Tiling[linestyle=none]
+ {(#1,-0.5\pslinewidth)(#2,0.5\pslinewidth)}}
+
+ \SpecialDashedLine{0}{7}{\Dashes}
+
+ \psset{unit=0.5,linewidth=1mm,linecolor=red}
+ \SpecialDashedLine{0}{10}{\Dashes}
+\end{LTXexample}
+
+ It allows also to use special patterns in business graphics, as in the
+following example generated by \texttt{PstChart}\footnote{A personal
+development to draw business charts with PSTricks, not distributed.}.
+
+
+\vspace{3mm}
+\begin{figure}[!ht]
+\centering
+\psset{unit=0.75cm}
+% Generated by pstchart.sh version 0.21 (11/28/97)
+{\psset{dimen=middle}
+\psset{xunit=2,yunit=5}
+\begin{pspicture}(-0.6,-0.2)(6.6,2.3)
+% Title
+ \rput(3,2.200){\shortstack{Fantaisist repartition of kangaroos\\
+ in the world (in thousands)}}
+% Frame background
+ \psframe*[linecolor=LemonChiffon!40](0,0)(6,2.000)
+% Graduations
+ \multido{\r=0.0+0.500,\n=0+500}{5}{\rput[r](-0.12,\r){\psscalebox{0.8}{\n}}}
+% Minor ticks
+ \multips(0,0.100)(0,0.100){19}{\psline[unit=4.8pt](1,0)}
+ \multips(6,0.100)(0,0.100){19}{\psline[unit=4.8pt](-1,0)}
+% Major ticks
+ \multips(0,0.500)(0,0.500){3}{\psline[unit=9.6pt](1,0)}
+ \multips(6,0.500)(0,0.500){3}{\psline[unit=9.6pt](-1,0)}
+% Lines from major ticks marks
+ \multips(0,0.500)(0,0.500){3}{\psline[linestyle=dotted,linewidth=0.6pt](6,0)}
+% Drawing for the data
+ \psset{linestyle=none,fillcycley=1,fillcyclex=1,fillloopaddy=2}
+ \psboxfill{\psset{unit=0.78\psxunit}\KangarooPstChart{red}}
+ \rput(0.7,0){\psframe[fillstyle=boxfill](0,0)(0.75,1.8)}
+ \psboxfill{\psset{unit=0.78\psxunit}\KangarooPstChart{yellow}}
+ \rput(1.7,0){\psframe[fillstyle=boxfill](0,0)(0.75,0.8)}
+ \psboxfill{\psset{unit=0.78\psxunit}\KangarooPstChart{cyan}}
+ \rput(2.7,0){\psframe[fillstyle=boxfill](0,0)(0.75,0.55)}
+ \psboxfill{\psset{unit=0.78\psxunit}\KangarooPstChart{magenta}}
+ \rput(3.7,0){\psframe[fillstyle=boxfill](0,0)(0.75,0.5)}
+ \psboxfill{\psset{unit=0.78\psxunit}\KangarooPstChart{green}}
+ \rput(4.7,0){\psframe[fillstyle=boxfill](0,0)(0.75,0.2)}
+% Bottom labels
+ \uput{0.2}[270]{0}(1,0){\psscalebox{0.7}{Oceania}}
+ \uput{0.2}[270]{0}(2,0){\psscalebox{0.7}{Africa}}
+ \uput{0.2}[270]{0}(3,0){\psscalebox{0.7}{Asia}}
+ \uput{0.2}[270]{0}(4,0){\psscalebox{0.7}{America}}
+ \uput{0.2}[270]{0}(5,0){\psscalebox{0.7}{Europe}}
+% Frame box around the chart
+ \psframe[linestyle=solid](0,0)(6,2.000)
+\end{pspicture}}
+ \caption{Bar chart generated by PstChart, with bars filled by patterns}
+ \label{fig:PstChart}
+\end{figure}
+
+
+\section{``Dynamic'' tilings}
+
+ In some cases, tilings used non \emph{static} tiles, that is to say that the
+\emph{prototile(s)}, even if unique, can have several forms, by instance
+specified by different colors or rotations, not fixed before generation or
+varying each time.
+
+\subsection{Lewthwaite-Pickover-Truchet tiling}
+
+
+
+
+
+ We give here for example the so-called \emph{Truchet} tiling, which much be
+in fact better called \emph{Lewthwaite-Pick\-over-Truchet (LPT)} tiling%
+\footnote{For description of the context, history and references about
+S\'ebastien \textsc{Truchet} and this tiling, see \cite{EsperetGirou98}.}.
+
+ The unique prototile is only a square with two opposite circle arcs.
+This tile has obviously two positions, if we rotate it from 90 degrees (see
+the two tiles on the next figure). A \emph{LPT tiling} is a tiling with
+randomly oriented LPT tiles. We can see that even if it is very simple in it
+principle, it draw sophisticated curves with strange properties.
+
+ Nevertheless, in the straightforward way \FillPackage{} does not work,
+because the \Lcs{psboxfill} macro store the content of the tile used in a
+\TeX{} box, which is static. So the calling to the random function is done
+only one time, which explain that only one rotation of the tile is used for
+all the tiling. It's only the one of the two rotations which could differ from
+one drawing to the next one...
+
+% Truchet (Lewthwaite-Pickover-Truchet) tiling
+% --------------------------------------------
+
+\begin{LTXexample}[pos=t]
+% LPT prototile
+ \newcommand\ProtoTileLPT{%
+ \psset{dimen=middle}
+ \begin{pspicture}(1,1)
+ \psframe(1,1)
+ \psarc(0,0){0.5}{0}{90}
+ \psarc(1,1){0.5}{-180}{-90}
+ \end{pspicture}}
+
+% LPT tile
+ \newcount\Boolean
+ \newcommand{\BasicTileLPT}{%
+% From random.tex by Donald Arseneau
+ \setrannum{\Boolean}{0}{1}%
+ \ifnum\Boolean=0
+ \ProtoTileLPT%
+ \else
+ \psrotateleft{\ProtoTileLPT}%
+ \fi}
+
+ \ProtoTileLPT\hfill\psrotateleft{\ProtoTileLPT}\hfill
+ \psset{unit=0.5}
+ \psboxfill{\BasicTileLPT}
+ \Tiling{(5,5)}
+\end{LTXexample}
+
+
+ But, for simple cases, there is a solution to this problem using a mixture
+of PSTricks and PostScript programming. Here the PSTricks
+construction \Lcs{pscustom}\verb+{+\Lcs{code}\verb+{...}}+ allow to insert PostScript code
+inside the \LaTeX{} + PSTricks one.
+
+ Programmation is less straightforward, but it has also the advantage to be
+notably faster, as all the tilings operations are done in PostScript, and
+mainly to not be limited by \TeX{} memory (the \TeX{} + PSTricks solution
+I wrote in 1995 for the colored problem was limited to small sizes for this
+reason). Just note also that \Lcs{pslbrace} and \Lcs{psrbrace} are two
+PSTricks macros to define and be able to insert the \verb+{+ and \verb+}+
+characters.
+
+
+
+
+\begin{LTXexample}[pos=t]
+% LPT prototile
+\newcommand\ProtoTileLPT{%
+ \psset{dimen=middle}
+ \psframe(1,1)
+ \psarc[linecolor=blue](0,0){0.5}{0}{90}
+ \psarc[linecolor=red](1,1){0.5}{-180}{-90}}
+
+\newcount\InitCounter
+
+\ifPSTlualatex
+ \newcommand\BasicTileLPT{%
+ \InitCounter=\the\time
+ \begin{pspicture}(1,1)
+ \pstverb{
+ rand \the\InitCounter\space add 2 mod 0 eq
+ {\luaPSTbox\hbox{\ProtoTileLPT}}%
+ { 1 0 \csname tx@ScreenCoor\endcsname translate
+ \luaPSTbox\hbox{\psrotateleft{\ProtoTileLPT}}} ifelse /.TeXBox findresource exec
+ }%
+ \end{pspicture}}
+\else
+ \newcommand\BasicTileLPT{%
+ \InitCounter=\the\time
+ \pscustom{\code{%
+ rand \the\InitCounter\space add 2 mod 0 eq \pslbrace}}
+ \begin{pspicture}(1,1)
+ \ProtoTileLPT
+ \end{pspicture}%
+ \pscustom{\code{\psrbrace \pslbrace}}
+ \psrotateleft{\ProtoTileLPT}%
+ \pscustom{\code{\psrbrace ifelse}}}
+\fi
+\psset{fillcycley=1,fillcyclex=1,fillloopaddy=2,unit=0.4,linewidth=0.8pt}
+\psboxfill{\BasicTileLPT}
+\Tiling{(10,10)}
+\end{LTXexample}
+
+
+
+
+ Using the very surprising fact (see \cite{EsperetGirou98}) that
+coloration of these tiles do not depend of their neighbors (even if it is
+difficult to believe as the opposite seems obvious!) but only of the parity of
+the value of row and column positions, we can directly program in the same way
+a colored version of the LPT tiling.
+
+ We have also introduce in the \FillPackage{} code for \emph{tiling} mode two
+new accessible Post\-Script variables, \texttt{row} and
+\texttt{column}\footnotemark, which can be useful in some circonstances, like
+this one.
+
+
+
+
+
+\newcommand\ProtoTileLPT[2]{%
+ \psset{dimen=middle,linestyle=none,fillstyle=solid}
+ \psframe[fillcolor=#1](1,1)
+ \psset{fillcolor=#2}
+ \pswedge(0,0){0.5}{0}{90}
+ \pswedge(1,1){0.5}{-180}{-90}}
+
+\newcount\InitCounter
+
+\ifPSTlualatex
+ \newcommand\BasicTileLPT[2]{%
+ \InitCounter=\the\time
+ \begin{pspicture}(1,1)%
+ \pstverb{
+ rand \the\InitCounter\space sub 2 mod 0 eq {
+ \txfillDict row column end add 2 mod 0 eq {\luaPSTbox\hbox{%
+ \ProtoTileLPT{#1}{#2}%
+ }} {\luaPSTbox\hbox{%
+ \ProtoTileLPT{#2}{#1}%
+ }} ifelse /.TeXBox findresource exec
+ } {
+ 1 0 \csname tx@ScreenCoor\endcsname translate
+ \txfillDict row column end add 2 mod 0 eq {\luaPSTbox\hbox{%
+ \psrotateleft{\ProtoTileLPT{#2}{#1}}%
+ }} {\luaPSTbox\hbox{%
+ \psrotateleft{\ProtoTileLPT{#1}{#2}}%
+ }} ifelse /.TeXBox findresource exec
+ } ifelse
+ }%
+ \end{pspicture}}
+\else
+ \newcommand\BasicTileLPT[2]{%
+ \InitCounter=\the\time
+ \pscustom{\code{%
+ rand \the\InitCounter\space sub 2 mod 0 eq \pslbrace
+ row column add 2 mod 0 eq \pslbrace}}
+ \begin{pspicture}(1,1)\ProtoTileLPT{#1}{#2}\end{pspicture}%
+ \pscustom{\code{\psrbrace \pslbrace}}
+ \ProtoTileLPT{#2}{#1}%
+ \pscustom{\code{%
+ \psrbrace ifelse \psrbrace \pslbrace row column add 2 mod 0 eq \pslbrace}}
+ \psrotateleft{\ProtoTileLPT{#2}{#1}}\pscustom{\code{\psrbrace \pslbrace}}
+ \psrotateleft{\ProtoTileLPT{#1}{#2}}\pscustom{\code{\psrbrace ifelse \psrbrace ifelse}}}
+\fi
+
+\psboxfill{\BasicTileLPT{red}{yellow}}
+\Tiling{(4,4)}\hfill
+\psset{unit=0.4}\psboxfill{\BasicTileLPT{blue}{cyan}}
+\Tiling{(15,15)}
+
+
+\psset{unit=1cm}
+\begin{lstlisting}
+\newcommand\ProtoTileLPT[2]{%
+ \psset{dimen=middle,linestyle=none,fillstyle=solid}
+ \psframe[fillcolor=#1](1,1)
+ \psset{fillcolor=#2}
+ \pswedge(0,0){0.5}{0}{90}
+ \pswedge(1,1){0.5}{-180}{-90}}
+
+\newcount\InitCounter
+
+ \newcommand\BasicTileLPT[2]{%
+ \InitCounter=\the\time
+ \begin{pspicture}(1,1)%
+ \pstverb{
+ rand \the\InitCounter\space sub 2 mod 0 eq {
+ \txfillDict row column end add 2 mod 0 eq {\luaPSTbox\hbox{%
+ \ProtoTileLPT{#1}{#2}%
+ }} {\luaPSTbox\hbox{%
+ \ProtoTileLPT{#2}{#1}%
+ }} ifelse /.TeXBox findresource exec
+ } {
+ 1 0 \csname tx@ScreenCoor\endcsname translate
+ \txfillDict row column end add 2 mod 0 eq {\luaPSTbox\hbox{%
+ \psrotateleft{\ProtoTileLPT{#2}{#1}}%
+ }} {\luaPSTbox\hbox{%
+ \psrotateleft{\ProtoTileLPT{#1}{#2}}%
+ }} ifelse /.TeXBox findresource exec
+ } ifelse
+ }%
+ \end{pspicture}}
+
+ \psboxfill{\BasicTileLPT{red}{yellow}}
+ \Tiling{(4,4)}\hfill
+ \psset{unit=0.4}\psboxfill{\BasicTileLPT{blue}{cyan}}
+ \Tiling{(15,15)}
+\end{lstlisting}
+
+
+ Another classic example is to generate coordinates and numerotation for a
+grid. Of course, it is possible to do it directly in PSTricks using nested
+\Lcs{multido} commands. It would be clearly easy to program, but, nevertheless,
+for users who have a little knowledge of PostScript programming, this offer
+an alternative which is useful for large cases, because on this way it will
+be notably faster and less computer ressources consuming.
+
+ Remember here that the tiling is drawn from left to right, and top to
+bottom, and note that the PostScript variable \texttt{x2} give the total
+number of columns.
+
+
+
+\begin{externalDocument}[
+% grfOptions={width=0.48\linewidth},
+% pages={1,3},
+% frame,
+ compiler=lualatex,
+% showFilename,
+ crop,
+ cropmargin=5,
+ eps,
+ force,
+ %runs=2,
+ code,
+ docType=latex,
+ %frame,
+ %lstOptions={columns=fixed}
+ ]{pst-fill-doc}
+\RequirePackage{pdfmanagement-testphase}
+\DeclareDocumentMetadata{uncompress}
+\documentclass{article}
+\pagestyle{empty}
+\usepackage[tiling]{pst-fill}
+%StartVisiblePreamble
+\newcommand\Square{\begin{pspicture}(1,1)\psframe[dimen=middle](1,1)\end{pspicture}}
+\newcommand\Tiling[2][]{%
+ \begin{pspicture}#2 \psframe[fillstyle=boxfill,#1]#2\end{pspicture}}
+\newcommand\ProtoTile{%
+ \Square
+ \pscustom{%
+ \moveto(-0.9,0.75) % In PSTricks units
+ \code{\ifPSTlualatex\txfillDict\fi
+ /Times-Italic findfont 8 scalefont setfont
+ (\string\() show row 3 string cvs show (,) show
+ column 3 string cvs show (\string\)) show \ifPSTlualatex end \fi}
+ \moveto(-0.5,0.25) % In PSTricks units
+ \code{\ifPSTlualatex\txfillDict\fi
+ /Times-Bold findfont 18 scalefont setfont
+ 1 0 0 setrgbcolor % Red color
+ /center { dup stringwidth pop 2 div neg 0 rmoveto } def
+ row 1 sub x2 mul column add 3 string cvs
+ center show \ifPSTlualatex end \fi }}}
+%StopVisiblePreamble
+\begin{document}
+\psset{fillcycley=0,fillcyclex=0,fillloopaddy=0}
+\psboxfill{\ProtoTile}
+\Tiling{(6,4)}
+\end{document}
+\end{externalDocument}
+
+
+
+\subsection{A complete example: the Poisson equation}
+
+ To finish, we will show a complete real example, a drawing to explain the
+method used to solve the \textsc{Poisson} equation by a domain
+decomposition method, adapted to distributed memory computers. The
+objective is to show the communications required between processes and the
+position of the data to exchange. This code also show some useful and powerful
+technics for PSTricks programming (look specially at the way some higher level
+macros are defined, and how the same object is used to draw the four
+neighbors).
+
+\psset{unit=1cm}
+\newcommand{\Pattern}[1]{%
+ \begin{pspicture}(-0.25,-0.25)(0.25,0.25)\rput{*0}{\psdot[dotstyle=#1]}
+ \end{pspicture}}
+\newcommand{\West}{\Pattern{o}} \newcommand{\South}{\Pattern{x}}
+\newcommand{\Central}{\Pattern{+}}\newcommand{\North}{\Pattern{square}}
+\newcommand{\East}{\Pattern{triangle}}
+\newcommand{\Cross}{%
+ \pspolygon[unit=0.5,linewidth=0.2,linecolor=red](0,0)(0,1)(1,1)(1,2)(2,2)(2,1)%
+ (3,1)(3,0)(2,0)(2,-1)(1,-1)(1,0)}
+\newcommand{\StylePosition}[1]{\LARGE\textcolor{red}{\textbf{#1}}}
+\newcommand{\SubDomain}[4]{%
+ \psboxfill{#4}\begin{psclip}{\psframe[linestyle=none]#1}%
+ \psframe[linestyle=#3](5,5)\psframe[fillstyle=boxfill]#2%
+ \end{psclip}}
+\newcommand{\SendArea}[1]{\psframe[fillstyle=solid,fillcolor=cyan]#1}
+\newcommand{\ReceiveData}[2]{%
+ \psboxfill{#2}\psframe[fillstyle=solid,fillcolor=yellow,addfillstyle=boxfill]#1}%
+\newcommand{\Neighbor}[2]{%
+ \begin{pspicture}(5,5)
+ \rput{*0}(2.5,2.5){\StylePosition{#1}}
+ \ReceiveData{(0.5,0)(4.5,0.5)}{\Central}\SendArea{(0.5,0.5)(4.5,1)}%
+ \SubDomain{(5,2)}{(0.5,0.5)(4.5,3)}{dashed}{#2}%
+ \pcarc[arcangle=45,arrows=->](0.5,-1.25)(0.5,0.25)%
+ \pcarc[arcangle=45,arrows=->,linestyle=dotted,dotsep=2pt](4.5,0.75)(4.5,-0.75)%
+ \end{pspicture}}%
+ \psset{dimen=middle,dotscale=2,fillloopadd=2}
+\begin{pspicture}(-5.7,-5.7)(5.7,5.7)
+ \rput(0,0){%
+ \begin{pspicture}(5,5)
+ \ReceiveData{(0,0.5)(0.5,4.5)}{\West} \ReceiveData{(4.5,0.5)(5,4.5)}{\East}
+ \ReceiveData{(0.5,4.5)(4.5,5)}{\North}\ReceiveData{(0.5,0)(4.5,0.5)}{\South}
+ \SendArea{(0.5,0.5)(1,4.5)}\SendArea{(4,0.5)(4.5,4.5)}
+ \SendArea{(0.5,0.5)(4.5,1)}\SendArea{(0.5,4)(4.5,4.5)}
+ \SubDomain{(5,5)}{(0.5,0.5)(4.5,4.5)}{solid}{\Central}
+ \psline(1,0.5)(1,4.5)\psline(4,0.5)(4,4.5)%
+ \rput(1.5,4){\Cross}\rput(2,2){\Cross}%
+ \end{pspicture}}%
+ \rput(0,5.5){\Neighbor{N}{\North}}\rput{-90}(5.5,0){\Neighbor{E}{\East}}%
+ \rput{90}(-5.5,0){\Neighbor{W}{\West}}\rput{180}(0,-5.5){\Neighbor{S}{\South}}%
+\end{pspicture}
+
+\begin{lstlisting}
+ \newcommand{\Pattern}[1]{%
+ \begin{pspicture}(-0.25,-0.25)(0.25,0.25)\rput{*0}{\psdot[dotstyle=#1]}
+ \end{pspicture}}
+ \newcommand{\West}{\Pattern{o}} \newcommand{\South}{\Pattern{x}}
+ \newcommand{\Central}{\Pattern{+}}\newcommand{\North}{\Pattern{square}}
+ \newcommand{\East}{\Pattern{triangle}}
+ \newcommand{\Cross}{%
+ \pspolygon[unit=0.5,linewidth=0.2,linecolor=red](0,0)(0,1)(1,1)(1,2)(2,2)(2,1)
+ (3,1)(3,0)(2,0)(2,-1)(1,-1)(1,0)}
+ \newcommand{\StylePosition}[1]{\LARGE\textcolor{red}{\textbf{#1}}}
+ \newcommand{\SubDomain}[4]{%
+ \psboxfill{#4}
+ \begin{psclip}{\psframe[linestyle=none]#1}
+ \psframe[linestyle=#3](5,5)\psframe[fillstyle=boxfill]#2
+ \end{psclip}}
+ \newcommand{\SendArea}[1]{\psframe[fillstyle=solid,fillcolor=cyan]#1}
+ \newcommand{\ReceiveData}[2]{%
+ \psboxfill{#2}
+ \psframe[fillstyle=solid,fillcolor=yellow,addfillstyle=boxfill]#1}
+ \newcommand{\Neighbor}[2]{%
+ \begin{pspicture}(5,5)
+ \rput{*0}(2.5,2.5){\StylePosition{#1}}
+ \ReceiveData{(0.5,0)(4.5,0.5)}{\Central}\SendArea{(0.5,0.5)(4.5,1)}
+ \SubDomain{(5,2)}{(0.5,0.5)(4.5,3)}{dashed}{#2}%
+% Receive and send arrows
+ \pcarc[arcangle=45,arrows=->](0.5,-1.25)(0.5,0.25)
+ \pcarc[arcangle=45,arrows=->,linestyle=dotted,dotsep=2pt](4.5,0.75)(4.5,-0.75)
+ \end{pspicture}}
+ \psset{dimen=middle,dotscale=2,fillloopadd=2}
+ \begin{pspicture}(-5.7,-5.7)(5.7,5.7)
+% Central domain
+ \rput(0,0){%
+ \begin{pspicture}(5,5)
+% Receive from West, East, North and South
+ \ReceiveData{(0,0.5)(0.5,4.5)}{\West} \ReceiveData{(4.5,0.5)(5,4.5)}{\East}
+ \ReceiveData{(0.5,4.5)(4.5,5)}{\North}\ReceiveData{(0.5,0)(4.5,0.5)}{\South}
+% send area for West, East, North and South
+ \SendArea{(0.5,0.5)(1,4.5)} \SendArea{(4,0.5)(4.5,4.5)}
+ \SendArea{(0.5,0.5)(4.5,1)} \SendArea{(0.5,4)(4.5,4.5)}
+% Central domain
+ \SubDomain{(5,5)}{(0.5,0.5)(4.5,4.5)}{solid}{\Central}
+% Redraw overlapped linesY
+ \psline(1,0.5)(1,4.5) \psline(4,0.5)(4,4.5)
+% Two crossesY
+ \rput(1.5,4){\Cross} \rput(2,2){\Cross}
+ \end{pspicture}}
+% The four neighborsY
+ \rput(0,5.5){\Neighbor{N}{\North}} \rput{-90}(5.5,0){\Neighbor{E}{\East}}
+ \rput{90}(-5.5,0){\Neighbor{W}{\West}} \rput{180}(0,-5.5){\Neighbor{S}{\South}}
+ \end{pspicture}
+\end{lstlisting}
+%
+
+\section{Debugging}
+
+For debugging (to debug, set PstDebug=1)
+we now use the one from pstricks to prevent a clash with package
+pstricks 2004-06-22
+% \define@key[psset]{pst-fill}{PstDebug}{\pst@getint{#1}\psk@PstDebug}
+ \psset{PstDebug=0}
+
+\printbibliography
+\printindex
+
+
+\end{document}
+
diff --git a/graphics/pstricks/contrib/pst-fill/latex/pst-fill.sty b/graphics/pstricks/contrib/pst-fill/latex/pst-fill.sty
new file mode 100644
index 0000000000..d5a2eb9736
--- /dev/null
+++ b/graphics/pstricks/contrib/pst-fill/latex/pst-fill.sty
@@ -0,0 +1,23 @@
+%%
+%% This is file `pst-fill.sty',
+%%
+%% Denis Girou (CNRS/IDRIS - France) <Denis.Girou@idris.fr>
+%% Herbert Voss <hvoss@tug.org>
+%% (C) 2007-2021
+%%
+%% This program can be redistributed and/or modified under the terms
+%% of the LaTeX Project Public License Distributed from CTAN archives
+%% in directory macros/latex/base/lppl.txt.
+%%
+%% DESCRIPTION:
+%% `pst-fill' is a PSTricks package for filling and tiling areas
+%%
+\RequirePackage{pstricks}
+\ProvidesPackage{pst-fill}[2010/03/20 package wrapper for pst-fill.tex (hv)]
+\DeclareOption{tiling}{\def\PstTiling{true}}
+\ProcessOptions\relax
+\input{pst-fill.tex}
+\ProvidesFile{pst-fill.tex} [\filedate\space v\fileversion\space `PST-fill' (tvz,dg,hv)]
+\endinput
+%%
+%% End of file `pst-fill.sty'.
diff --git a/graphics/pstricks/contrib/pst-fill/pst-fill.dtx b/graphics/pstricks/contrib/pst-fill/pst-fill.dtx
deleted file mode 100644
index 43961608a2..0000000000
--- a/graphics/pstricks/contrib/pst-fill/pst-fill.dtx
+++ /dev/null
@@ -1,1817 +0,0 @@
-% \iffalse meta-comment, etc.
-%%
-%% Package `pst-fill.dtx'
-%%
-%% Denis Girou (CNRS/IDRIS - France) <Denis.Girou@idris.fr>
-%% Herbert Voss <voss@pstricks.de>
-%%
-%% This program can be redistributed and/or modified under the terms
-%% of the LaTeX Project Public License Distributed from CTAN archives
-%% in directory macros/latex/base/lppl.txt.
-%%
-%% DESCRIPTION:
-%% `pst-fill' is a PSTricks package for filling and tiling areas
-%%
-% \fi
-% \changes{v1.01}{2007/03/10}{bugfix for incomplete ifx (hv)}
-% \changes{v1.00}{2006/11/06}{use pst-xkey for extend keys (hv)}
-% \changes{v0.99}{2004/08/17}{merge the VTeX and TeX versions (patch 4) (hv)}
-% \changes{v0.98}{2004/06/22}{delete the Pst@Debug option and use the
-% the one from pstricks to prevent a clash with pst-gr3d (hv)}
-% \changes{v0.97}{2001/10/09}{make it work with VTeX (mv)}
-% \changes{v0.94}{1997/04/08}{With a \PstTiling macro defined (or "tiling" optional parameter
-% on \textbackslash usepackage[tiling]{pst-fill}), this file run exactly as
-% the original boxfill.tex file from Timothy, version 0.94,
-% except a correction in \textbackslash pst@ManualFillCycle to avoid a division by 0.
-% It's the default.}
-% \changes{v0.93}{1997/04/07}{With a \textbackslash PstTiling macro defined (or "tiling" optional parameter
-% on \textbackslash usepackage[tiling]{pst-fill}) there are several add-ons
-% and changes to do `tiling' rather than `filling' in "automatic" mode :
-% - we fix the position of the beginning of tiling,
-% - we allow normally the framing of the area as expected, using
-% the line.... parameters
-% - we define move parameters fillmovex, fillmovey and fillmove,
-% - we define fillcyclex as previous fillcycle parameter, and add the
-% fillcycley and fillcycle (both fillcyclex and fillcycley) ones
-% - we can extend the tiling area using fillloopaddx, fillloopaddy and
-% fillloopadd parameters,
-% - we can debug and see the whole tiling area without clipping using
-% PstDebug parameter,
-% - for names consistancy, we can use fillangle in place of boxfillangle
-% and fillsize in place of boxfillsize,
-% - default value for fillsep is 0 and for fillsize is auto.}
-%
-% \DoNotIndex{\!,\",\#,\$,\%,\&,\',\(,\+,\*,\,,\-,\.,\/,\:,\;,\<,\=,\>,\?}
-% \DoNotIndex{\@,\@B,\@K,\@cTq,\@f,\@fPl,\@ifnextchar,\@nameuse,\@oVk}
-% \DoNotIndex{\[,\\,\],\^,\_,\ }
-% \DoNotIndex{\^,\\^,\\\^,$\^$,$\\^$,$\\^$}
-% \DoNotIndex{\0,\2,\4,\5,\6,\7,\8,}
-% \DoNotIndex{\A,\a}
-% \DoNotIndex{\B,\b,\Bc,\begin,\Bq,\Bqc}
-% \DoNotIndex{\C,\c,\catcode,\cJA,\CodelineIndex,\csname}
-% \DoNotIndex{\D,\def,\define@key,\Df,\divide,\DocInput,\documentclass,\pst@addfams}
-% \DoNotIndex{\eCN,\edef,\else,\eHd,\eMcj,\EnableCrossrefs,\end,\endcsname}
-% \DoNotIndex{\endCenterExample,\endExample,\endinput,\endpsclip}
-% \DoNotIndex{\PrintIndex,\PrintChanges,\ProvidesFile}
-% \DoNotIndex{\endpspicture,\endSideBySideExample,\Example}
-% \DoNotIndex{\F,\f,\FdUrr,\fi,\filedate,\fileversion,\FV@Environment}
-% \DoNotIndex{\FV@UseKeyValues,\FV@XRightMargin,\FVB@Example,\fvset}
-% \DoNotIndex{\G,\g,\GetFileInfo,\gr,\GradientLoaded,\gsFKrbK@o,\gsj,\gsOX}
-% \DoNotIndex{\hbadness,\hfuzz,\HLEmphasize,\HLMacro,\HLMacro@i}
-% \DoNotIndex{\HLReverse,\HLReverse@i,\hqcu,\HqY}
-% \DoNotIndex{\I,\i,\ifx,\input,\Ir,\IU}
-% \DoNotIndex{\j,\jl,\JT,\JVodH}
-% \DoNotIndex{\K,\k,\kfSlL}
-% \DoNotIndex{\L,\let}
-% \DoNotIndex{\message,\mHNa,\mIU}
-% \DoNotIndex{\N,\nB,\newcmykcolor,\newdimen,\newif,\nW}
-% \DoNotIndex{\O,\oCDJDo,\ocQhVI,\OnlyDescription,\oRKJ}
-% \DoNotIndex{\P,\p,\ProvidesPackage,\psframe,\pslinewidth,\psset}
-% \DoNotIndex{\PstAtCode,\PSTricksLoaded}
-% \DoNotIndex{\q,\Qr,\qssRXq,\qu,\qXjFQp,\qYL}
-% \DoNotIndex{\R,\r,\RecordChanges,\relax,\RlaYI,\rN,\Rp,\rp,\RPDXNn,\rput}
-% \DoNotIndex{\S,\scalebox,\SgY,\SideBySide@Example,\SideBySideExample}
-% \DoNotIndex{\SgY,\sk,\Sp,\space,\sZb}
-% \DoNotIndex{\T,\the,\tw@}
-% \DoNotIndex{\u,\UiSWGEf@,\uJi,\usepackage,\uVQdMM,\UYj}
-% \DoNotIndex{\VerbatimEnvironment,\VerbatimInput,\VrC@}
-% \DoNotIndex{\WhZ,\WjKCYb,\WNs}
-% \DoNotIndex{\XkN,\XW}
-% \DoNotIndex{\Z,\ZCM,\Ze}
-% \DoNotIndex{\addtocounter,\advance,\alph,\arabic,\AtBeginDocument,\AtEndDocument}
-% \DoNotIndex{\AtEndOfPackage,\begingroup,\bfseries,\bgroup,\box,\csname}
-% \DoNotIndex{\else,\endcsname,\endgroup,\endinput,\expandafter,\fi}
-% \DoNotIndex{\TeX,\z@,\p@,\@one,\xdef,\thr@@,\string,\sixt@@n,\reset,\or,\multiply,\repeat,\RequirePackage}
-% \DoNotIndex{\@cclvi,\@ne,\@ehpa,\@nil,\copy,\dp,\global,\hbox,\hss,\ht,\ifodd,\ifdim,\ifcase,\kern}
-% \DoNotIndex{\chardef,\loop,\leavevmode,\ifnum,\lower}
-% \setcounter{IndexColumns}{2}
-%
-% ^^A To extend the height used for the text
-%
-% ^^A Aligned labels in a description environment
-%\newenvironment{Description}[1]{%
-%\begin{list}{nothing}{\setlength{\leftmargin}{#1}
-%\setlength{\labelwidth}{\leftmargin}\setlength{\labelsep}{1mm}}}
-%{\end{list}}
-%
-% ^^A For macro names
-%\DeclareRobustCommand\cs[1]{\texttt{\char`\\#1}}
-%
-%
-% ^^A From ltugboat.cls
-% ^^A For references
-%\makeatletter
-%\newcommand\acro[1]{\textsc{#1}\@}
-%\def\CTAN{\acro{CTAN}}
-%\let\texttub\textsl % ^^A redefined in other situations
-%\def\TUB{\texttub{TUGboat}}
-%\def\TUG{\TeX\ \UG}
-%\def\tug{\acro{TUG}}
-%\def\UG{Users Group}
-% ^^A For the bibliography
-%\let\@internalcite\cite
-%\def\cite{\def\@citeseppen{-1000}%
-% \def\@cite##1##2{(##1\if@tempswa , ##2\fi)}%
-% \def\citeauthoryear##1##2##3{##1, ##3}\@internalcite}
-%\def\etal{et\,al.\@}
-%\newcommand\CTANdirectory[1]{\expandafter\urldef
-% \csname CTAN@#1\endcsname\path}
-%\newcommand\CTANfile[1]{\expandafter\urldef
-% \csname CTAN@#1\endcsname\path}
-%\newcommand\CTANref[1]{\expandafter\@setref\csname CTAN@#1\endcsname
-% \relax{#1}}
-%\makeatother
-% ^^A Define CTAN addresses
-%\CTANdirectory{mpattern}{graphics/metapost/macros/mpattern}
-%\CTANdirectory{pstricks}{graphics/pstricks}
-%\CTANdirectory{pst-fill.sty}{graphics/pstricks/latex/pst-fill.sty}
-%\CTANdirectory{pst-fill}{graphics/pstricks/generic/pst-fill.tex}
-%\CTANdirectory{Roegel}{graphics/metapost/contrib/macros/truchet}
-%\CTANdirectory{xypic}{macros/generic/diagrams/xypic}
-%
-% ^^A Personal macros (D.G.)
-% ^^A ----------------------
-%
-% ^^A Some colors used
-%\definecolor{LemonChiffon}{rgb}{1.,0.98,0.8}
-%\definecolor{LightBlue} {rgb}{0.8,0.85,0.95}
-%\definecolor{PaleGreen} {rgb}{0.88,1,0.88}
-%\definecolor{PeachPuff} {rgb}{1.0,0.85,0.73}
-%
-% ^^A To define a unique string for TeX and LaTeX
-%\newcommand{\AllTeX}{%
-%{\rm(L\kern-.36em\raise.3ex\hbox{\sc a}\kern-.15em)%
-%T\kern-.1667em\lower.7ex\hbox{E}\kern-.125emX}}
-%
-% ^^A Bibliography style
-%\bibliographystyle{ltugbib}
-%
-% ^^A Name macros
-%\newcommand{\FillPackage}{\textsf{`pst-fill'}}
-%\newcommand{\XYpic}{%
-%\leavevmode\hbox{\kern-.1em X\kern-.3em\lower.4ex\hbox{Y\kern-.15em}-pic}}
-%
-%\makeatletter
-%
-% ^^A Example environments
-% ^^A (do not use in them the four JXYZ characters, that we will use
-% ^^A as escape characters!)
-%
-% ^^A Default PSTricks parameters
-% \psset{dimen=middle}
-%
-% ^^A Translation in PSTricks from the one drawn by Emmanuel Chailloux and
-% ^^A Guy Cousineau for the MLgraph system
-% ^^A (see /ftp.ens.fr:/pub/unix/lang/MLgraph/version-2.1/MLgraph-refman.ps.gz)
-% ^^A The kangaroo itself is reproduce from an original picture from Raoul Raba
-% \newcommand{\DimX}{2.47}
-% \newcommand{\DimY}{4.8}
-% \newcommand{\DimXDivTwo}{1.235}
-%
-% \newcommand{\KangarooItself}[1]{%
-% ^^A Body
-% \pspolygon[fillstyle=solid,fillcolor=#1]%
-% (52.5,68)(55,72.5)(55.8,76.5)(56.8,79.8)(58.2,83)(60,85.8)(61.5,86.5)
-% (64,87)(66,87.5)(67.8,87.3)(70,87)(71.5,87.3)(73,88)(74.7,88.5)
-% (76,90.3)(77,91.5)(72.8,93.8)(69,96)(64.5,99)(59.4,103)(56.2,106.3)
-% (53,110.5)(49.5,115.5)(47.2,119.9)(45.7,126)(43.2,123)(41.5,121)(37.5,125)
-% (37,122.5)(36.8,120)(37,117)(37.6,113.5)(38.6,110)(40,106.3)(42,102.3)
-% (43.5,99.5)(45,97)(46.2,94)(46.8,91.7)(47.2,88)(47,83.5)(46.3,80.8)
-% (45.3,78.5)(42.5,76.5)(39.5,75.8)(36,75.9)(33,75.9)(29,76.2)(26,77)
-% (22.3,77.5)(18,78.4)(12.8,79.3)(8.6,80)(5.5,80.3)(3,80.5)(0,80)
-% (-5.2,78.5)(-9,76.3)(-11.2,74.8)(-13,72.5)(-16.5,68)(-16.5,68)(-19.5,62.5)
-% (-22,58)(-25.5,53)(-29,48.5)(-32.5,45)(-36,42)(-39,39.5)(-44,37)
-% (-49,35)(-51,34)(-53.5,34.5)(-55.5,36)(-56.5,38)(-56.5,40.5)(-55,41.5)
-% (-53.5,41)(-51.5,41)(-50.5,43)(-50.5,44.5)(-51,47)(-51.5,47.2)(-56.5,47)
-% (-58.5,46.5)(-60,44.7)(-62,42.3)(-63,39.5)(-63.5,36.3)(-63.5,33)(-63.1,29.5)
-% (-61.5,26)(-58,23.6)(-54,22.2)(-50.7,22)(-47.5,22)(-44.5,22.3)(-41,23.5)
-% (-36.8,25.8)(-33,28)(-28.5,31)(-23.4,35)(-20.2,38.3)(-17,42.5)(-13.5,47.5)
-% (-11.2,51.9)(-9.7,58)(-7.2,55)(-5.5,53)(-1.5,57)(-1,54.5)(-0.8,52)
-% (-1,49)(-1.6,45.5)(-2.6,42)(-4,38.3)(-6,34.3)(-7.5,31.5)(-9,29)
-% (-10.2,26)(-10.8,23.7)(-11.2,20)(-11,15.5)(-10.3,12.8)(-9.3,10.5)(-6.5,8.5)
-% (-3.5,7.8)(0,7.9)(3,7.9)(7,8.2)(10,9)(13.7,9.5)(18,10.4)
-% (23.2,11.3)(27.4,12)(30.5,12.3)(33,12.5)(36,12)(41.2,10.5)(45,8.3)
-% (47.2,6.8)(49,4.5)(52.5,0)(50,4.5)(49.2,8.5)(48.2,11.8)(46.8,15)
-% (45,17.8)(43.5,18.5)(41,19)(39,19.5)(37.2,19.3)(35,19)(33.5,19.3)
-% (32,20)(30.3,20.5)(29,22.3)(28,23.5)(28,23.5)(24.5,22.3)(21.5,22)
-% (18.3,22)(15,22.2)(11,23.6)(7.5,26)(5.9,29.5)(5.5,33)(5.5,36.3)
-% (6,39.5)(7,42.3)(9,44.7)(10.5,46.5)(12.5,47)(17.5,47.2)(18,47)
-% (18.5,44.5)(18.5,43)(17.5,41)(15.5,41)(14,41.5)(12.5,40.5)(12.5,38)
-% (13.5,36)(15.5,34.5)(18,34)(20,35)(25,37)(30,39.5)(33,42)
-% (36.5,45)(40,48.5)(43.5,53)(47,58)(49.5,62.5)(52.5,68)
-% ^^A Eye
-% \pscircle*[linecolor=white](58.2,98.3){2\psxunit}
-% \pscircle*(58.2,97.3){\psxunit}
-% ^^A Mouth
-% \psline(71.5,88)(70,89.3)(68.5,90.3)(67,91.9)
-% ^^A Tear
-% \psline(42,121)(45,118)(47,115.3)(48.5,112.7)(50,110)(51.8,106.5)
-% (52.5,103.7)(53,100.5)
-% \pspolygon(41.2,115.8)(43.2,114.7)(45,112.5)(47,109.8)(48,107)(49.5,104.2)%
-% (50.5,101.6)(51,98.5)(47.7,100.6)(46,102.2)(44.8,104)(43.5,106)
-% (42.5,108)(41.7,110.5)(41,113.2)}
-%
-% \newcommand{\Kangaroo}[1]{%
-% \begin{pspicture}(\DimX,\DimY)
-% \psset{unit=0.035278}
-% \KangarooItself{#1}
-% \end{pspicture}}
-%
-% \newcommand{\KangarooPstChart}[1]{{%
-% \psset{xunit=0.006784,yunit=0.00735,linewidth=0.01}
-% \begin{pspicture}(-65.5,0)(82,126)
-% \KangarooItself{#1}
-% \end{pspicture}}}
-%
-%
-% ^^A For the possible index and changes log
-% \setlength{\columnseprule}{0.6pt}
-%
-% ^^A Beginning of the documentation itself
-%\title{\texttt{pst-fill}\\A PSTricks package for filling and tiling areas}
-%\author{Timothy Van Zandt\thanks{\protect\url{tvz@econ.insead.fr}. (documentation by
-% Denis Girou (\protect\url{Denis.Girou@idris.fr}) and Herbert Vo\ss (\protect\url{hvoss@tug.org}).}}
-%
-%\date{\shortstack{\today --- Version 1.00\\
-% {\small Documentation revised \today}}}
-% \maketitle
-% \tableofcontents
-%
-%\begin{abstract}
-% \FillPackage{} is a PSTricks \cite{vanZandt93},\cite{Girou94},\cite{vanZandtGirou94},
-%\cite{Hoenig97},\cite{LGC97} package to draw easily
-% various kinds of filling and tiling of areas. It is also a good example of
-% the great power and flexibility of PSTricks, as in fact it is a very short
-% program (it body is around 200~lines long) but nevertheless really powerful.
-%
-% \hspace{5mm} It was written in 1994 by Timothy \textsc{van Zandt} but
-% publicly available only in PSTricks 97 and without any documentation.
-% We describe here the version \emph{97 patch 2} of December 12, 1997, which
-% is the original one modified by myself to manage \emph{tilings} in the
-% so-called \emph{automatic} mode. This article would like to serve both of
-% reference manual and of user's guide.
-%
-%This package is available on \CTAN{} in the
-% \texttt{graphics/pstricks} directory (files \texttt{latex/pst-fill.sty} and
-% \texttt{generic/pst-fill.tex}).
-%\end{abstract}
-%
-%\section{Introduction}
-%
-% Here we will refer as \emph{filling} as the operation which consist to fill
-%a defined area by a pattern (or a composition of patterns). We will refer as
-%\emph{tiling} as the operation which consist to do the same thing, but with
-%the control of the starting point, which is here the upper left corner.
-%The pattern is positioned relatively to this point. This make an essential
-%difference between the two modes, as without control of the starting point we
-%can't draw \emph{tilings} (sometimes called \emph{tesselations}) as used in
-%many fields of Art and Science%
-%\footnote{For an extensive presentation of tilings, in their history and usage
-%in many fields, see the reference book \cite{GS87}.
-%
-% In the \TeX{} world, few work was done on tilings. You can look at the
-%\emph{tile} extension of the \XYpic{} package \cite{XYpic}, at the articles of
-%Kees \textsc{van der Laan} \cite[paragraph 7]{LAAN96} (the tiling was in
-%fact directly done in PostScript) and \cite{LAAN97}, at the \MP{} program
-%(available on \CTANref{Roegel}) by Denis \textsc{Roegel} for the
-%\textsc{Truchet} contest in 1995 \cite{EsperetGirou98} and at the \MP{}
-%package \cite{Bolek98} to draw patterns, which have a strong connection with
-%tilings.}.
-%
-% Nevertheless, as tilings are a wide and difficult field in mathematics, this
-%package is limited to simple ones, mainly \emph{monohedral} tilings with one
-%prototile (which can be composite, see section \ref{sec:KindTiles}). With some
-%experience and wiliness we can do more and obtained easily rather
-%sophisticated results, but obviously hyperbolic tilings like the famous
-%\textsc{Escher} ones or aperiodic tilings like the \textsc{Penrose} ones are
-%not in the capabilities of this package. For more complex needs, we must used
-%low level and more painfull technics, with the basic \cs{multido}
-%and \cs{multirput} macros.
-%
-%\section{Package history and description of it two different modes}
-%
-% As already said, this package was written in 1994 by Timothy \textsc{van
-%Zandt}. Two modes were defined, called respectively \emph{manual} and
-%\emph{automatic}. For both, the pattern is generated on contiguous positions in
-%a rather large area which include the region to fill, later cut to the
-%required dimensions by clipping mechanism. In the first mode, the pattern is
-%explicitely inserted in the PostScript file each time. In the second one, the
-%result is the same but with an unique explicit insertion of the pattern and a
-%repetition done by PostScript. Nevertheless, in this method, the control of
-%the starting point was loosed, so it allowed only to \emph{fill} a region and
-%not to \emph{tile} it.
-%
-% See the difference between the two modes, \emph{tiling}:
-% {\psset{unit=0.5cm}%
-% \psboxfill{\begin{pspicture}(1,1)\psframe[dimen=middle](1,1)\end{pspicture}}
-% \begin{pspicture}(3,3.3)
-% \psframe[fillstyle=boxfill](3,3)
-% \end{pspicture}}
-% and \emph{filling}:
-%{%
-% \makeatletter
-%\pst@def{BoxFill}<
-% gsave
-% gsave \tx@STV CM grestore dtransform CM idtransform
-% abs /h ED abs /w ED
-% pathbbox
-% h div round 2 add cvi /y2 ED
-% w div round 2 add cvi /x2 ED
-% h div round 2 sub cvi /y1 ED
-% w div round 2 sub cvi /x1 ED
-% /y2 y2 y1 sub def
-% /x2 x2 x1 sub def
-% CP
-% y1 h mul sub neg /y1 ED
-% x1 w mul sub neg /x1 ED
-% clip
-% y2 {
-% /x x1 def
-% x2 {
-% save CP x y1 T moveto Box restore
-% /x x w add def
-% } repeat
-% /y1 y1 h add def
-% } repeat
-% currentpoint currentfont grestore setfont moveto>
-% \makeatother
-%
-% \psset{unit=0.5}
-% \psboxfill{\begin{pspicture}(1,1)\psframe[dimen=middle](1,1)\end{pspicture}}
-% \begin{pspicture}(3,3.3)
-% \psframe[fillstyle=boxfill](3,3)
-% \end{pspicture}
-% or
-% \begin{pspicture}(3,3.3)
-% \psframe[fillstyle=boxfill](3,3)
-% \end{pspicture}
-%}
-%as we can see that initial position is arbitrary and dependent of
-%the current point.
-%
-%
-% It's clear that usage of filling is very restrictive comparing to tiling,
-%as desired effects required very often the possibility to control the starting
-%point. So, this mode was of limited interest, but unfortunately the
-%\emph{manual} one has the very big disadvantage to require very huge amounts
-%of ressources, mainly in disk space and consequently in printing time.
-%A small tiling can require sometimes several megabytes in \emph{manual} mode!
-%So, it was very often not really usable in practice.
-%
-%It is why I modified the code, to allow tilings in \emph{automatic} mode,
-%controlling in this mode too the starting point. And most of the time, that is
-%to say if some special options are not used, the tiling is done exactly in the
-%region described, which make it faster. So there is no more reason to use the
-%\emph{manual} mode, apart very special cases where \emph{automatic} one cannot
-%work, as explained later -- currently, I know only one case.
-%
-% To load this modified \emph{automatic} mode, with \LaTeX{} use
-%simply:\newline
-%\verb+\usepackage[tiling]{pst-fill}+\newline
-%and in plain \TeX{} after:\newline
-%\verb+\input{pst-fill}+\newline
-%add the following definition:\newline
-%\verb+\def\PstTiling{true}+
-%
-% To obtain the original behaviour, just don't use the \emph{tiling} optional
-%keyword at loading.
-%
-% Take care than in \emph{tiling} mode, I introduce also some other changes.
-%First I define aliases on some parameter names for consistancy (all specific
-%parameters will begin by the \texttt{fill} prefix in this case) and I change
-%some default values, which were not well adapted for tilings (\texttt{fillsep}
-%is set to 0 and as explained \texttt{fillsize} set to \texttt{auto}). I rename
-%\texttt{fillcycle} to \texttt{fillcyclex}. I also restore normal way so that
-%the frame of the area is drawn and all line (\texttt{linestyle},
-%\texttt{linecolor}, \texttt{doubleline}, etc.) parameters are now active (but
-%there are not in non \emph{tiling} mode). And I also introduce new parameters
-%to control the tilings (see below).
-%
-% \textbf{In all the following examples, we will consider only the
-% \emph{tiling} mode.}
-%
-% To do a tiling, we have just to define the pattern with the
-% \verb+\psboxfill+ macro and to use the new \texttt{fillstyle}
-% \verb+boxfill+.
-%
-% Note that tilings are drawn from left to right and top to bottom, which can
-%have an importance in some circonstances.
-%
-% PostScript programmers can be also interested to know that, even in the
-%\emph{automatic} mode, the iterations of the pattern are managed directly by
-%the PostScript code of the package which used only PostScript Level 1
-%operators. The special ones introduced in Level 2 for drawing of patterns
-%\cite[section 4.9]{PostScript95} are not used.
-%
-% And first, for conveniance, we define a simple \cs{Tiling} macro, which
-%will simplify our examples:
-%
-%\begin{verbatim}
-% \newcommand{\Tiling}[2][]{%
-% \edef\Temp{#1}%
-% \begin{pspicture}#2
-% \ifx\Temp\empty
-% \psframe[fillstyle=boxfill]#2
-% \else
-% \psframe[fillstyle=boxfill,#1]#2
-% \fi
-% \end{pspicture}}
-%\end{verbatim}
-%
-%
-%\newcommand{\Tiling}[2][]{%
-% \edef\Temp{#1}%
-% \begin{pspicture}#2
-% \ifx\Temp\empty
-% \psframe[fillstyle=boxfill]#2
-% \else
-% \psframe[fillstyle=boxfill,#1]#2
-% \fi
-% \end{pspicture}}
-%
-%\subsection{Parameters}
-%
-% There are \textbf{14} specific parameters available to change the way the
-% filling/tiling is defined, and one debugging option.
-%
-% \begin{Description}{2cm}
-% \item [fillangle (real)\hfill :] the value of the rotation
-% applied to the patterns (\emph{Default:~0}).
-% \end{Description}
-%
-%
-% In this case, we must force the tiling area to be notably larger than the
-% area to cover, to be sure that the defined area will be covered after rotation.
-% \lstset{gobble=2}
-% \begin{LTXexample}
-% \newcommand{\Square}{%
-% \begin{pspicture}(1,1)
-% \psframe[dimen=middle](1,1)
-% \end{pspicture}}
-% \psset{unit=0.5}
-% \psboxfill{\Square}
-% \Tiling[fillangle=45]{(3,3)}\quad
-% \Tiling[fillangle=-60]{(3,3)}
-% \end{LTXexample}
-%
-% \newcommand{\Square}{\begin{pspicture}(1,1)\psframe[dimen=middle](1,1)\end{pspicture}}
-%
-% \begin{Description}{2cm}
-% \setcounter{footnote}{1}
-% \item[\texttt{fillsepx} (real$\|$dim) :] value of the horizontal
-% separation between consecutive patterns (\emph{Default:~0 for
-% tilings\footnotemark, 2pt otherwise}). \footnotetext{This option was added
-% by me, is not part of the original package and is available only if the
-% \texttt{tiling} keyword is used when loading the package.}
-% \setcounter{footnote}{1}
-% \item [\texttt{fillsepy} (real$\|$dim)\hfill :] value of the vertical
-% separation between consecutive patterns (\emph{Default:~0 for
-% ti\-lings\footnotemark, 2pt otherwise}).
-% \setcounter{footnote}{1}
-% \item [\texttt{fillsep} (real$\|$dim)\hfill :] value of horizontal and
-% vertical separations between consecutive patterns (\emph{Default:~0 for
-% tilings\footnotemark, 2pt otherwise}).
-% \end{Description}
-%
-% These values can be negative, which allow the tiles to overlap.
-%
-% \begin{LTXexample}
-% \psset{unit=0.5}
-% \psboxfill{\Square}
-% \Tiling[fillsepx=2mm]{(3,3)}
-% \Tiling[fillsepy=1mm]{(3,3)}\\
-% \Tiling[fillsep=0.5]{(3,3)}
-% \Tiling[fillsep=-0.5]{(3,3)}
-% \end{LTXexample}
-%
-% \begin{Description}{2cm}
-% \item [\texttt{fillcyclex}\footnotemark\ (integer)\hfill :] Shift
-% coefficient applied to each row (\emph{Default:~0}).
-% \footnotetext{It was \texttt{fillcycle} in the original version.}
-% \setcounter{footnote}{1}
-% \item [\texttt{fillcycley}\footnotemark\ (integer)\hfill :] Same thing for
-% columns (\emph{Default:~0}).
-% \setcounter{footnote}{1}
-% \item [\texttt{fillcycle}\footnotemark\ (integer)\hfill :] Allow to fix
-% both \texttt{fillcyclex} and \texttt{fillcycley} directly to the same value
-% (\emph{Default:~0}).
-% \end{Description}
-%
-% For instance, if \texttt{fillcyclex} is 2, the second row of patterns will
-% be horizontally shifted by a factor of $\frac{1}{2}=0.5$, and by a factor of
-% 0.333 if \texttt{fillcyclex} is 3, etc.). These values can be negative.
-%
-% \begin{LTXexample}[width=0.35\linewidth]
-% \psset{unit=0.5}
-% \psboxfill{\Square}
-% \newcommand{\TilingA}[1]{\Tiling[fillcyclex=#1]{(3,3)}}
-% \TilingA{0} \TilingA{1}\\
-% \TilingA{2} \TilingA{3}\\[3mm]
-% \TilingA{4} \TilingA{5}\\
-% \TilingA{6} \TilingA{-3}\\[3mm]
-% \Tiling[fillcycley=2]{(3,3)}
-% \Tiling[fillcycley=3]{(3,3)}\\
-% \Tiling[fillcycley=-3]{(3,3)}
-% \Tiling[fillcycle=2]{(3,3)}
-% \end{LTXexample}
-%
-% \begin{Description}{2cm}
-% \setcounter{footnote}{1}
-% \item [\texttt{fillmovex}\footnotemark\ (real$\|$dim)\hfill :] value of the
-% horizontal moves between consecutive patterns (\emph{Default:~0}).
-% \setcounter{footnote}{1}
-% \item [\texttt{fillmovey}\footnotemark\ (real$\|$dim)\hfill :] value of the
-% vertical moves between consecutive patterns (\emph{Default:~0}).
-% \setcounter{footnote}{1}
-% \item [\texttt{fillmove}\footnotemark\ (real$\|$dim)\hfill :] value of
-% horizontal and vertical moves between consecutive patterns
-% (\emph{Default:~0}).
-% \end{Description}
-%
-% These parameters allow the patterns to overlap and to draw some special
-% kinds of tilings. They are implemented only for the \emph{automatic} and
-% \emph{tiling} modes and their values can be negative.
-%
-% In some cases, the effect of these parameters will be the same that with the
-% \texttt{fillcycle?} ones, but you can see that it is not true for some other
-% values.
-%
-% \begin{LTXexample}
-% \psset{unit=0.5}
-% \psboxfill{\Square}
-% \Tiling[fillmovex=0.5]{(3,3)}
-% \Tiling[fillmovey=0.5]{(3,3)}\\
-% \Tiling[fillmove=0.5]{(3,3)}
-% \Tiling[fillmove=-0.5]{(3,3)}
-% \end{LTXexample}
-%
-% \begin{Description}{2cm}
-% \item [\texttt{fillsize}
-% (auto$\|$\{(real$\|$dim,real$\|$dim)(real$\|$dim,real$\|$dim)\}) :] The
-% choice of \emph{automatic} mode or the size of the area in \emph{manual}
-% mode. If first pair values are not given, (0,0) is used. (\emph{Default:
-% auto when \emph{tiling} mode is used, {(-15cm,-15cm)(15cm,15cm)}
-% otherwise}).
-% \end{Description}
-%
-% As explained in the introduction, the \emph{manual} mode can require very
-% huge amount of computer ressources. So, it usage is to discourage in front off
-% the \emph{automatic} mode. It seems only useful in special circonstances, in
-% fact when the \emph{automatic} mode failed, which is known only in one case,
-% for some kinds of EPS files, as the ones produce by dump of portions of
-% screens (see \ref{sec:GraphicFiles}).
-%
-% \begin{Description}{2cm}
-% \setcounter{footnote}{1}
-% \item [\texttt{fillloopaddx}\footnotemark\ (integer)\hfill :] number of
-% times the pattern is added on left and right positions (\emph{Default:~0}).
-% \setcounter{footnote}{1}
-% \item [\texttt{fillloopaddy}\footnotemark\ (integer)\hfill :] number of
-% times the pattern is added on top and bottom positions (\emph{Default:~0}).
-% \setcounter{footnote}{1}
-% \item [\texttt{fillloopadd}\footnotemark\ (integer)\hfill :] number of
-% times the pattern is added on left, right, top and bottom positions
-% (\emph{Default:~0}).
-% \end{Description}
-%
-% These parameters are only useful in special circonstances, as for complex
-% patterns when the size of the rectangular box used to tile the area doesn't
-% correspond to the pattern itself (see an example in Figure~\ref{fig:Sheeps})
-% and also sometimes when the size of the pattern is not a divisor of the size
-% of the area to fill and that the number of loop repeats is not properly
-% computed, which can occur.
-%
-% They are implemented only for the \emph{tiling} mode.
-%
-% \begin{Description}{2cm}
-% \setcounter{footnote}{1}
-% \item [\texttt{PstDebug}\footnotemark\ (integer, 0 or 1)\hfill :] to
-% require to see the exact tiling done, without clipping (\emph{Default:~0}).
-% \end{Description}
-%
-% It's mainly useful for debugging or to understand better how the tilings
-% are done. It is implemented only for the \emph{tiling} mode.
-%
-% \begin{LTXexample}
-% \psset{unit=0.3,PstDebug=1}
-% \psboxfill{\Square}
-% \psset{linewidth=1mm}
-% \Tiling{(2,2)}\\[5mm]
-% \Tiling[fillcyclex=2]{(2,2)}\\[1cm]
-% \Tiling[fillmove=0.5]{(2,2)}
-% \end{LTXexample}
-%
-% \vspace{3cm}
-% \section{Examples}
-%
-% In fact this unique \cs{psboxfill} macro allow a lot a variations and
-% different usages. We will try here to demonstrate this.
-%
-% \subsection{Kind of tiles}
-% \label{sec:KindTiles}
-%
-% Of course, we can access to all the power of PSTricks macros to define the
-% \emph{tiles} (\emph{patterns}) used. So, we can define complicated ones.
-%
-% Here we give four other Archimedian tilings (those built with only some
-% regular polygons) among the twelve existing, first discovered completely by
-% Johanes \textsc{Kepler} at the beginning of 17th century \cite{GS87}, the two
-% other \emph{regular} ones with the tiling by squares, formed by a unique
-% regular polygon, and two other formed by two different regular polygons.
-%
-% \begin{LTXexample}[pos=t]
-% \newcommand{\Triangle}{%
-% \begin{pspicture}(1,1)
-% \pstriangle[dimen=middle](0.5,0)(1,1)
-% \end{pspicture}}
-% \newcommand{\Hexagon}{
-% ^^A sin(60)=0.866
-% \begin{pspicture}(0.866,0.75)
-% \SpecialCoor
-% ^^A Hexagon
-% \pspolygon[dimen=middle]%
-% (0.5;30)(0.5;90)(0.5;150)(0.5;210)(0.5;270)(0.5;330)
-% \end{pspicture}}
-%
-% \psset{unit=0.5}
-% \psboxfill{\Triangle}
-% \Tiling{(4,4)}\hfill
-% ^^A The two other regular tilings
-% \Tiling[fillcyclex=2]{(4,4)}\hfill
-% \psboxfill{\Hexagon}
-% \Tiling[fillcyclex=2,fillloopaddy=1]{(5,5)}
-% \end{LTXexample}
-%
-% \begin{LTXexample}[pos=t]
-% \newcommand{\ArchimedianA}{%
-% ^^A Archimedian tiling 3^2.4.3.4
-% \psset{dimen=middle}
-% ^^A sin(60)=0.866
-% \begin{pspicture}(1.866,1.866)
-% \psframe(1,1)
-% \psline(1,0)(1.866,0.5)(1,1)(0.5,1.866)(0,1)(-0.866,0.5)
-% \psline(0,0)(0.5,-0.866)
-% \end{pspicture}}
-% \newcommand{\ArchimedianB}{%
-% ^^A Archimedian tiling 4.8^2
-% \psset{dimen=middle,unit=1.5}
-% ^^A sin(22.5)=0.3827 ; cos(22.5)=0.9239
-% \begin{pspicture}(1.3066,0.6533)
-% \SpecialCoor
-% ^^A Octogon
-% \pspolygon(0.5;22.5)(0.5;67.5)(0.5;112.5)(0.5;157.5)
-% (0.5;202.5)(0.5;247.5)(0.5;292.5)(0.5;337.5)
-% \end{pspicture}}
-%
-% \psset{unit=0.5}
-% \psboxfill{\ArchimedianA}
-% \Tiling[fillmove=0.5]{(7,7)}\hfill
-% \psboxfill{\ArchimedianB}
-% \Tiling[fillcyclex=2,fillloopaddy=1]{(7,7)}
-% \end{LTXexample}
-%
-% \setcounter{footnote}{3}
-% We can of course tile an area arbitrarily defined. And with the
-% \texttt{addfillstyle} parameter\footnote{Introduced in PSTricks 97.}, we can
-% easily mix the \texttt{boxfill} style with another one.
-%
-% \begin{LTXexample}[width=6cm]
-% \psset{unit=0.5,dimen=middle}
-% \psboxfill{%
-% \begin{pspicture}(1,1)
-% \psframe(1,1)
-% \pscircle(0.5,0.5){0.25}
-% \end{pspicture}}
-% \begin{pspicture}(4,6)
-% \pspolygon[fillstyle=boxfill,fillsep=0.25](0,1)(1,4)(4,6)(4,0)(2,1)
-% \end{pspicture}\hspace{1em}
-% \begin{pspicture}(4,4)
-%% \pscircle[linestyle=none,fillstyle=solid,fillcolor=yellow,fillsep=0.5,
-%% addfillstyle=boxfill](2,2){2}
-% \end{pspicture}
-% \end{LTXexample}
-%
-% Various effects can be obtained, sometimes complicated ones very easily, as
-% in this example reproduced from one shown by Slavik \textsc{Jablan} in the
-% field of \emph{OpTiles}, inspired by the \emph{Op-art}:
-%
-% \begin{LTXexample}[pos=t]
-% \newcommand{\ProtoTile}{%
-% \begin{pspicture}(1,1)%%% 1/12=0.08333
-% \psset{linestyle=none,linewidth=0,
-% hatchwidth=0.08333\psunit,hatchsep=0.08333\psunit}
-% \psframe[fillstyle=solid,fillcolor=black,addfillstyle=hlines,hatchcolor=white](1,1)
-% \pswedge[fillstyle=solid,fillcolor=white,addfillstyle=hlines]{1}{0}{90}
-% \end{pspicture}}
-% \newcommand{\BasicTile}{%
-% \begin{pspicture}(2,1)
-% \rput[lb](0,0){\ProtoTile}\rput[lb](1,0){\psrotateleft{\ProtoTile}}
-% \end{pspicture}}
-% \ProtoTile\hfill\BasicTile\hfill
-% \psboxfill{\BasicTile}
-% \Tiling[fillcyclex=2]{(4,4)}
-% \end{LTXexample}
-%
-% It is also directly possible to surimpose several different tilings. Here is
-% the splendid visual proof of the \textsc{Pytha\-gore} theorem done by the arab
-% mathematician \textsc{Annairizi} around the year 900, given by superposition
-% of two tilings by squares of different sizes.
-%
-% \begin{LTXexample}[pos=t]
-% \psset{unit=1.5,dimen=middle}
-% \begin{pspicture*}(3,3)
-% \psboxfill{\begin{pspicture}(1,1)
-% \psframe(1,1)\end{pspicture}}
-% \psframe[fillstyle=boxfill](3,3)
-% \psboxfill{\begin{pspicture}(1,1)
-% \rput{-37}{\psframe[linecolor=red](0.8,0.8)}
-% \end{pspicture}}
-% \psframe[fillstyle=boxfill](3,4)
-% \pspolygon[fillstyle=hlines,hatchangle=90](1,2)(1.64,1.53)(2,2)
-% \end{pspicture*}
-% \end{LTXexample}
-%
-% In a same way, it is possible to build tilings based on figurative patterns,
-% in the style of the famous \textsc{Escher} ones. Following an example of
-% Andr\'e \textsc{Deledicq} \cite{Deledicq97}, we first show a simple tiling of
-% the \emph{p1} category (according to the international classification of the
-% 17~symmetry groups of the plane first discovered by the russian
-% crystalographer Jevgraf \textsc{Fedorov} at the end of the 19th century):
-%
-% \begin{LTXexample}[pos=t]
-% \newcommand{\SheepHead}[1]{%
-% \begin{pspicture}(3,1.5)
-% \pscustom[liftpen=2,fillstyle=solid,fillcolor=#1]{%
-% \pscurve(0.5,-0.2)(0.6,0.5)(0.2,1.3)(0,1.5)(0,1.5)
-% (0.4,1.3)(0.8,1.5)(2.2,1.9)(3,1.5)(3,1.5)(3.2,1.3)
-% (3.6,0.5)(3.4,-0.3)(3,0)(2.2,0.4)(0.5,-0.2)}
-% \pscircle*(2.65,1.25){0.12\psunit} % Eye
-% \psccurve*(3.5,0.3)(3.35,0.45)(3.5,0.6)(3.6,0.4)% Muzzle
-% ^^A % Mouth
-% \pscurve(3,0.35)(3.3,0.1)(3.6,0.05)
-% ^^A % Ear
-% \pscurve(2.3,1.3)(2.1,1.5)(2.15,1.7)\pscurve(2.1,1.7)(2.35,1.6)(2.45,1.4)
-% \end{pspicture}}
-% \psboxfill{\psset{unit=0.5}\SheepHead{yellow}\SheepHead{cyan}}
-% \Tiling[fillcyclex=2,fillloopadd=1]{(10,5)}
-% \end{LTXexample}
-% \label{fig:Sheeps}
-%
-% Now a tiling of the \emph{pg} category (the code for the kangaroo itself is
-% too long to be shown here, but has no difficulties ; the kangaroo is reproduce
-% from an original picture from Raoul \textsc{Raba} and here is a translation in
-% PSTricks from the one drawn by Emmanuel \textsc{Chailloux} and Guy
-% \textsc{Cousineau} for their MLgraph system \cite{MLgraphTSI}):
-%
-% \begin{LTXexample}[pos=t]
-% \psboxfill{\psset{unit=0.4}
-% \Kangaroo{yellow}\Kangaroo{red}\Kangaroo{cyan}\Kangaroo{green}%
-% \psscalebox{-1 1}{%
-% \rput(1.235,4.8){\Kangaroo{green}\Kangaroo{cyan}\Kangaroo{red}\Kangaroo{yellow}}}}
-% \Tiling[fillloopadd=1]{(10,6)}
-% \end{LTXexample}
-%
-% And here a \textsc{Wang} tiling \cite{Wang65}, \cite[chapter
-% 11]{GS87}, based on very simple tiles of the form of a square and composed
-% of four colored triangles. Such tilings are built with only a matching color
-% constraint. Despite of it simplicity, it is an important kind of tilings, as
-% \textsc{Wang} and others used them to study the special class of
-% \emph{aperiodic} tilings, and also because it was shown that surprisingly this
-% tiling is similar to a \textsc{Turing} machine.
-%
-% \begin{LTXexample}[pos=t]
-% \newcommand{\WangTile}[4]{%
-% \begin{pspicture}(1,1)
-% \pspolygon*[linecolor=#1](0,0)(0,1)(0.5,0.5)
-% \pspolygon*[linecolor=#2](0,1)(1,1)(0.5,0.5)
-% \pspolygon*[linecolor=#3](1,1)(1,0)(0.5,0.5)
-% \pspolygon*[linecolor=#4](1,0)(0,0)(0.5,0.5)
-% \end{pspicture}}
-% \newcommand{\WangTileA}{\WangTile{cyan}{yellow}{cyan}{cyan}}
-% \newcommand{\WangTileB}{\WangTile{yellow}{cyan}{cyan}{red}}
-% \newcommand{\WangTileC}{\WangTile{cyan}{red}{yellow}{yellow}}
-% \newcommand{\WangTiles}[1][]{%
-% \begin{pspicture}(3,3) \psset{ref=lb}
-% \rput(0,2){\WangTileB} \rput(1,2){\WangTileA}%
-% \rput(2,2){\WangTileC} \rput(0,1){\WangTileC}%
-% \rput(1,1){\WangTileB} \rput(2,1){\WangTileA}
-% \rput(0,0){\WangTileA} \rput(1,0){\WangTileC}%
-% \rput(2,0){\WangTileB}
-% #1
-% \end{pspicture}}
-% \WangTileA\hfill\WangTileB\hfill\WangTileC\hfill
-% \WangTiles[{\psgrid[subgriddiv=0,gridlabels=0](3,3)}]\hfill
-% \psset{unit=0.4} \psboxfill{\WangTiles} \Tiling{(12,12)}
-% \end{LTXexample}
-%
-% \subsection{External graphic files}
-% \label{sec:GraphicFiles}
-%
-% We can also fill an arbitrary area with an external image. We have only,
-% as usual, to matter of the \emph{BoundingBox} definition if there is no one
-% provided or if it is not the accurate one, as for the well known
-% \texttt{tiger} picture part of the \texttt{ghostscript} distribution.
-%
-% \begin{LTXexample}[pos=t]
-% \psboxfill{%% Strangely require x1=x2...
-% \begin{pspicture}(0,1)(0,4.1)
-% \includegraphics[bb=17 176 560 74,width=3cm]{tiger}
-% \end{pspicture}}
-% \Tiling{(6,6.2)}
-% \end{LTXexample}
-%
-% Nevertheless, there are some special files for which the \emph{automatic}
-% mode doesn't work, specially for some files obtained by a screen dump, as in
-% the next example, where a picture was reduced before it conversion in the
-% \emph{Encapsulated PostScript} format by a screen dump utility. In this case,
-% usage of the \emph{manual} mode is the only alternative, at the price of the
-% real multiple inclusion of the EPS file. We must take care to specify the
-% correct \texttt{fillsize} parameter, because otherwise the default values are
-% large and will load the file many times, perhaps just really using few
-% occurrences as the other ones would be clipped...
-%
-% \begin{LTXexample}[pos=t]
-% \psboxfill{\includegraphics{flowers}}
-% \begin{pspicture}(8,4)
-% \psellipse[fillstyle=boxfill,fillsize={(8,4)}](4,2)(4,2)
-% \end{pspicture}
-% \end{LTXexample}
-%
-% \subsection{Tiling of characters}
-%
-% We can also use the \cs{psboxfill} macro to fill the interior of characters
-% for special effects like these ones:
-%
-% \begin{LTXexample}[pos=t]
-% \DeclareFixedFont{\bigsf}{T1}{phv}{b}{n}{4.5cm}
-% \DeclareFixedFont{\smallrm}{T1}{ptm}{m}{n}{3mm}
-% \psboxfill{\smallrm Since 182 days...}
-% \begin{pspicture*}(8,4)
-% \centerline{%
-% \pscharpath[fillstyle=gradient,gradangle=-45,
-% gradmidpoint=0.5,addfillstyle=boxfill,
-% fillangle=45,fillsep=0.7mm]
-% {\rput[b](0,0.1){\bigsf 2000}}}
-% \end{pspicture*}
-% \end{LTXexample}
-%
-% \begin{LTXexample}[pos=t]
-% \DeclareFixedFont{\mediumrm}{T1}{ptm}{m}{n}{2cm}
-% \psboxfill{%
-% \psset{unit=0.1,linewidth=0.2pt}
-% \Kangaroo{PeachPuff}\Kangaroo{PaleGreen}%
-% \Kangaroo{LightBlue}\Kangaroo{LemonChiffon}%
-% \psscalebox{-1 1}{%
-% \rput(1.235,4.8){%
-% \Kangaroo{LemonChiffon}\Kangaroo{LightBlue}%
-% \Kangaroo{PaleGreen}\Kangaroo{PeachPuff}}}}
-% ^^A % A kangaroo of kangaroos...
-% \begin{pspicture}(8,2)
-% \pscharpath[linestyle=none,fillstyle=boxfill,fillloopadd=1]
-% {\rput[b](4,0){\mediumrm Kangaroo}}
-% \end{pspicture}
-% \end{LTXexample}
-%
-% \subsection{Other kinds of usage}
-%
-% Other kinds of usage can be imagined. For instance, we can use tilings in a
-% sort of degenerated way to draw some special lines made by a unique or
-% multiple repeating patterns. But it can be only a special dashed line, as here
-% with three different dashes:
-%
-% \begin{LTXexample}[pos=t]
-% \newcommand{\Dashes}{%
-% \psset{dimen=middle}
-% \begin{pspicture}(0,-0.5\pslinewidth)(1,0.5\pslinewidth)
-% \rput(0,0){\psline(0.4,0)}%
-% \rput(0.5,0){\psline(0.2,0)}%
-% \rput(0.8,0){\psline(0.1,0)}
-% \end{pspicture}}
-%
-% \newcommand{\SpecialDashedLine}[3]{%
-% \psboxfill{#3}
-% \Tiling[linestyle=none]
-% {(#1,-0.5\pslinewidth)(#2,0.5\pslinewidth)}}
-%
-% \SpecialDashedLine{0}{7}{\Dashes}
-%
-% \psset{unit=0.5,linewidth=1mm,linecolor=red}
-% \SpecialDashedLine{0}{10}{\Dashes}
-% \end{LTXexample}
-%
-% It allow also to use special patterns in business graphics, as in the
-% following example generated by \texttt{PstChart}\footnote{A personal
-% development to draw business charts with PSTricks, not distributed.}.
-%
-% \vspace{3mm}
-% \begin{figure}[!ht]
-% \centering
-% \psset{unit=0.75}
-% ^^A % Generated by pstchart.sh version 0.21 (11/28/97)
-% {\psset{dimen=middle}
-% \psset{xunit=2,yunit=0.005}
-% \begin{pspicture}(-0.6,-200)(6.6,2300)
-% ^^A % Title
-% \rput(3,2200){\shortstack{Fantaisist repartition of kangaroos\\
-% in the world (in thousands)}}
-% ^^A % Frame background
-% \psframe[fillstyle=solid,fillcolor=LemonChiffon](0,0)(6,2000)
-% ^^A % Graduations
-% \multido{\n=0+500}{5}{\rput[r](-0.12,\n){\psscalebox{0.8}{\n}}}
-% ^^A % Minor ticks
-% \multips(0,100)(0,100){19}{\psline[unit=4.8pt](1,0)}
-% \multips(6,100)(0,100){19}{\psline[unit=4.8pt](-1,0)}
-% ^^A % Major ticks
-% \multips(0,500)(0,500){3}{\psline[unit=9.6pt](1,0)}
-% \multips(6,500)(0,500){3}{\psline[unit=9.6pt](-1,0)}
-% ^^A % Lines from major ticks marks
-% \multips(0,500)(0,500){3}{\psline[linestyle=dotted,linewidth=0.6pt](6,0)}
-% ^^A % Drawing for the data
-% \psboxfill{\psset{unit=0.78\psxunit}\KangarooPstChart{red}}
-% \psframe[linestyle=none,fillstyle=boxfill,fillloopaddy=1](0.61,0)(1.39,1800)
-% \psboxfill{\psset{unit=0.78\psxunit}\KangarooPstChart{yellow}}
-% \psframe[linestyle=none,fillstyle=boxfill,fillloopaddy=1](1.61,0)(2.39,800)
-% \psboxfill{\psset{unit=0.78\psxunit}\KangarooPstChart{cyan}}
-% \psframe[linestyle=none,fillstyle=boxfill,fillloopaddy=1](2.61,0)(3.39,550)
-% \psboxfill{\psset{unit=0.78\psxunit}\KangarooPstChart{magenta}}
-% \psframe[linestyle=none,fillstyle=boxfill,fillloopaddy=1](3.61,0)(4.39,500)
-% \psboxfill{\psset{unit=0.78\psxunit}\KangarooPstChart{green}}
-% \psframe[linestyle=none,fillstyle=boxfill,fillloopaddy=1](4.61,0)(5.39,200)
-% ^^A % Bottom labels
-% \uput{0.2}[270]{0}(1,0){\psscalebox{0.7}{Oceania}}
-% \uput{0.2}[270]{0}(2,0){\psscalebox{0.7}{Africa}}
-% \uput{0.2}[270]{0}(3,0){\psscalebox{0.7}{Asia}}
-% \uput{0.2}[270]{0}(4,0){\psscalebox{0.7}{America}}
-% \uput{0.2}[270]{0}(5,0){\psscalebox{0.7}{Europe}}
-% ^^A % Frame box around the chart
-% \psframe[linestyle=solid](0,0)(6,2000)
-% \end{pspicture}}
-% \caption{Bar chart generated by PstChart, with bars filled by patterns}
-% \label{fig:PstChart}
-% \end{figure}
-%
-% \section{``Dynamic'' tilings}
-%
-% In some cases, tilings used non \emph{static} tiles, that is to say that the
-% \emph{prototile(s)}, even if unique, can have several forms, by instance
-% specified by different colors or rotations, not fixed before generation or
-% varying each time.
-%
-% \subsection{Lewthwaite-Pickover-Truchet tiling}
-%
-% We give here for example the so-called \emph{Truchet} tiling, which much be
-% in fact better called \emph{Lewthwaite-Pick\-over-Truchet (LPT)} tiling%
-% \footnote{For description of the context, history and references about
-% S\'ebastien \textsc{Truchet} and this tiling, see \cite{EsperetGirou98}.}.
-%
-% The unique prototile is only a square with two opposite circle arcs.
-% This tile has obviously two positions, if we rotate it from 90 degrees (see
-% the two tiles on the next figure). A \emph{LPT tiling} is a tiling with
-% randomly oriented LPT tiles. We can see that even if it is very simple in it
-% principle, it draw sophisticated curves with strange properties.
-%
-% Nevertheless, in the straightforward way \FillPackage{} does not work,
-% because the \cs{psboxfill} macro store the content of the tile used in a
-% \TeX{} box, which is static. So the calling to the random function is done
-% only one time, which explain that only one rotation of the tile is used for
-% all the tiling. It's only the one of the two rotations which could differ from
-% one drawing to the next one...
-%
-% ^^A % Truchet (Lewthwaite-Pickover-Truchet) tiling
-% ^^A % --------------------------------------------
-%
-% \begin{LTXexample}[pos=t]
-% ^^A % LPT prototile
-% \newcommand{\ProtoTileLPT}{%
-% \psset{dimen=middle}
-% \begin{pspicture}(1,1)
-% \psframe(1,1)
-% \psarc(0,0){0.5}{0}{90}
-% \psarc(1,1){0.5}{-180}{-90}
-% \end{pspicture}}
-%
-% ^^A % LPT tile
-% \newcount\Boolean
-% \newcommand{\BasicTileLPT}{%
-% ^^A % From random.tex by Donald Arseneau
-% \setrannum{\Boolean}{0}{1}%
-% \ifnum\Boolean=0
-% \ProtoTileLPT%
-% \else
-% \psrotateleft{\ProtoTileLPT}%
-% \fi}
-%
-% \ProtoTileLPT\hfill\psrotateleft{\ProtoTileLPT}\hfill
-% \psset{unit=0.5}
-% \psboxfill{\BasicTileLPT}
-% \Tiling{(5,5)}
-% \end{LTXexample}
-%
-% But, for simple cases, there is a solution to this problem using a mixture
-% of PSTricks and PostScript programming. Here the PSTricks
-% construction \verb+\pscustom{\code{...}}+ allow to insert PostScript code
-% inside the \LaTeX{} + PSTricks one.
-%
-% Programmation is less straightforward, but it has also the advantage to be
-% notably faster, as all the tilings operations are done in PostScript, and
-% mainly to not be limited by \TeX{} memory (the \TeX{} + PSTricks solution
-% I wrote in 1995 for the colored problem was limited to small sizes for this
-% reason). Just note also that \cs{pslbrace} and \cs{psrbrace} are two
-% PSTricks macros to define and be able to insert the \verb+{+ and \verb+}+
-% characters.
-%
-% \begin{LTXexample}[pos=t]
-% ^^A % LPT prototile
-% \newcommand{\ProtoTileLPT}{%
-% \psset{dimen=middle}
-% \psframe(1,1)
-% \psarc(0,0){0.5}{0}{90}
-% \psarc(1,1){0.5}{-180}{-90}}
-%
-% ^^A % Counter to change the random seed
-% \newcount\InitCounter
-% ^^A % LPT tile
-% \newcommand{\BasicTileLPT}{%
-% \InitCounter=\the\time
-% \pscustom{\code{%
-% rand \the\InitCounter\space sub 2 mod 0 eq \pslbrace}}
-% \begin{pspicture}(1,1)
-% \ProtoTileLPT
-% \end{pspicture}%
-% \pscustom{\code{\psrbrace \pslbrace}}
-% \psrotateleft{\ProtoTileLPT}%
-% \pscustom{\code{\psrbrace ifelse}}}
-%
-% \psset{unit=0.4,linewidth=0.4pt}
-% \psboxfill{\BasicTileLPT}
-% \Tiling{(15,15)}
-% \end{LTXexample}
-%
-% Using the very surprising fact (see \cite{EsperetGirou98}) that
-% coloration of these tiles do not depend of their neighbors (even if it is
-% difficult to believe as the opposite seems obvious!) but only of the parity of
-% the value of row and column positions, we can directly program in the same way
-% a colored version of the LPT tiling.
-%
-% \setcounter{footnote}{1}
-% We have also introduce in the \FillPackage{} code for \emph{tiling} mode two
-% new accessible Post\-Script variables, \texttt{row} and
-% \texttt{column}\footnotemark, which can be useful in some circonstances, like
-% this one.
-%
-% \begin{LTXexample}[pos=t]
-% ^^A % LPT prototile
-% \newcommand{\ProtoTileLPT}[2]{%
-% \psset{dimen=middle,linestyle=none,fillstyle=solid}
-% \psframe[fillcolor=#1](1,1)
-% \psset{fillcolor=#2}
-% \pswedge(0,0){0.5}{0}{90} \pswedge(1,1){0.5}{-180}{-90}}
-% ^^A % Counter to change the random seed
-% \newcount\InitCounter
-% ^^A % LPT tile
-% \newcommand{\BasicTileLPT}[2]{%
-% \InitCounter=\the\time
-% \pscustom{\code{%
-% rand \the\InitCounter\space sub 2 mod 0 eq \pslbrace
-% row column add 2 mod 0 eq \pslbrace}}
-% \begin{pspicture}(1,1)\ProtoTileLPT{#1}{#2}\end{pspicture}%
-% \pscustom{\code{\psrbrace \pslbrace}}
-% \ProtoTileLPT{#2}{#1}%
-% \pscustom{\code{%
-% \psrbrace ifelse \psrbrace \pslbrace row column add 2 mod 0 eq \pslbrace}}
-% \psrotateleft{\ProtoTileLPT{#2}{#1}}\pscustom{\code{\psrbrace \pslbrace}}
-% \psrotateleft{\ProtoTileLPT{#1}{#2}}\pscustom{\code{\psrbrace ifelse \psrbrace ifelse}}}
-% \psboxfill{\BasicTileLPT{red}{yellow}}
-% \Tiling{(4,4)}\hfill
-% \psset{unit=0.4}\psboxfill{\BasicTileLPT{blue}{cyan}}
-% \Tiling{(15,15)}
-% \end{LTXexample}
-%
-% Another classic example is to generate coordinates and numerotation for a
-% grid. Of course, it is possible to do it directly in PSTricks using nested
-% \cs{multido} commands. It would be clearly easy to program, but, nevertheless,
-% for users who have a little knowledge of PostScript programming, this offer
-% an alternative which is useful for large cases, because on this way it will
-% be notably faster and less computer ressources consuming.
-%
-% Remember here that the tiling is drawn from left to right, and top to
-% bottom, and note that the PostScript variable \texttt{x2} give the total
-% number of columns.
-%
-% \begin{LTXexample}[pos=t]
-% ^^A % \Escape will be the \ character
-% {\catcode`\!=0\catcode`\\=11!gdef!Escape{\}}
-% \newcommand{\ProtoTile}{%
-% \Square\pscustom{%
-% \moveto(-0.9,0.75) % In PSTricks units
-% \code{ /Times-Italic findfont 8 scalefont setfont
-% (\Escape() show row 3 string cvs show (,) show
-% column 3 string cvs show (\Escape)) show}
-% \moveto(-0.5,0.25) % In PSTricks units
-% \code{ /Times-Bold findfont 18 scalefont setfont
-% 1 0 0 setrgbcolor % Red color
-% /center {dup stringwidth pop 2 div neg 0 rmoveto} def
-% row 1 sub x2 mul column add 3 string cvs center show}}}
-% \psboxfill{\ProtoTile}
-% \Tiling{(6,4)}
-% \end{LTXexample}
-%
-% \subsection{A complete example: the Poisson equation}
-%
-% To finish, we will show a complete real example, a drawing to explain the
-% method used to solve the \textsc{Poisson} equation by a domain
-% decomposition method, adapted to distributed memory computers. The
-% objective is to show the communications required between processes and the
-% position of the data to exchange. This code also show some useful and powerful
-% technics for PSTricks programming (look specially at the way some higher level
-% macros are defined, and how the same object is used to draw the four
-% neighbors).
-%
-%\psset{unit=1cm}
-%\newcommand{\Pattern}[1]{%
-% \begin{pspicture}(-0.25,-0.25)(0.25,0.25)\rput{*0}{\psdot[dotstyle=#1]}
-% \end{pspicture}}
-%\newcommand{\West}{\Pattern{o}} \newcommand{\South}{\Pattern{x}}
-%\newcommand{\Central}{\Pattern{+}}\newcommand{\North}{\Pattern{square}}
-%\newcommand{\East}{\Pattern{triangle}}
-%\newcommand{\Cross}{%
-% \pspolygon[unit=0.5,linewidth=0.2,linecolor=red](0,0)(0,1)(1,1)(1,2)(2,2)(2,1)%
-% (3,1)(3,0)(2,0)(2,-1)(1,-1)(1,0)}
-%\newcommand{\StylePosition}[1]{\LARGE\textcolor{red}{\textbf{#1}}}
-%\newcommand{\SubDomain}[4]{%
-% \psboxfill{#4}\begin{psclip}{\psframe[linestyle=none]#1}%
-% \psframe[linestyle=#3](5,5)\psframe[fillstyle=boxfill]#2%
-% \end{psclip}}
-%\newcommand{\SendArea}[1]{\psframe[fillstyle=solid,fillcolor=cyan]#1}
-%\newcommand{\ReceiveData}[2]{%
-% \psboxfill{#2}\psframe[fillstyle=solid,fillcolor=yellow,addfillstyle=boxfill]#1}%
-%\newcommand{\Neighbor}[2]{%
-% \begin{pspicture}(5,5)
-% \rput{*0}(2.5,2.5){\StylePosition{#1}}
-% \ReceiveData{(0.5,0)(4.5,0.5)}{\Central}\SendArea{(0.5,0.5)(4.5,1)}%
-% \SubDomain{(5,2)}{(0.5,0.5)(4.5,3)}{dashed}{#2}%
-% \pcarc[arcangle=45,arrows=->](0.5,-1.25)(0.5,0.25)%
-% \pcarc[arcangle=45,arrows=->,linestyle=dotted,dotsep=2pt](4.5,0.75)(4.5,-0.75)%
-% \end{pspicture}}%
-% \psset{dimen=middle,dotscale=2,fillloopadd=2}
-%\begin{pspicture}(-5.7,-5.7)(5.7,5.7)
-% \rput(0,0){%
-% \begin{pspicture}(5,5)
-% \ReceiveData{(0,0.5)(0.5,4.5)}{\West} \ReceiveData{(4.5,0.5)(5,4.5)}{\East}
-% \ReceiveData{(0.5,4.5)(4.5,5)}{\North}\ReceiveData{(0.5,0)(4.5,0.5)}{\South}
-% \SendArea{(0.5,0.5)(1,4.5)}\SendArea{(4,0.5)(4.5,4.5)}
-% \SendArea{(0.5,0.5)(4.5,1)}\SendArea{(0.5,4)(4.5,4.5)}
-% \SubDomain{(5,5)}{(0.5,0.5)(4.5,4.5)}{solid}{\Central}
-% \psline(1,0.5)(1,4.5)\psline(4,0.5)(4,4.5)%
-% \rput(1.5,4){\Cross}\rput(2,2){\Cross}%
-% \end{pspicture}}%
-% \rput(0,5.5){\Neighbor{N}{\North}}\rput{-90}(5.5,0){\Neighbor{E}{\East}}%
-% \rput{90}(-5.5,0){\Neighbor{W}{\West}}\rput{180}(0,-5.5){\Neighbor{S}{\South}}%
-%\end{pspicture}
-%
-% \begin{lstlisting}
-% \newcommand{\Pattern}[1]{%
-% \begin{pspicture}(-0.25,-0.25)(0.25,0.25)\rput{*0}{\psdot[dotstyle=#1]}
-% \end{pspicture}}
-% \newcommand{\West}{\Pattern{o}} \newcommand{\South}{\Pattern{x}}
-% \newcommand{\Central}{\Pattern{+}}\newcommand{\North}{\Pattern{square}}
-% \newcommand{\East}{\Pattern{triangle}}
-% \newcommand{\Cross}{%
-% \pspolygon[unit=0.5,linewidth=0.2,linecolor=red](0,0)(0,1)(1,1)(1,2)(2,2)(2,1)
-% (3,1)(3,0)(2,0)(2,-1)(1,-1)(1,0)}
-% \newcommand{\StylePosition}[1]{\LARGE\textcolor{red}{\textbf{#1}}}
-% \newcommand{\SubDomain}[4]{%
-% \psboxfill{#4}
-% \begin{psclip}{\psframe[linestyle=none]#1}
-% \psframe[linestyle=#3](5,5)\psframe[fillstyle=boxfill]#2
-% \end{psclip}}
-% \newcommand{\SendArea}[1]{\psframe[fillstyle=solid,fillcolor=cyan]#1}
-% \newcommand{\ReceiveData}[2]{%
-% \psboxfill{#2}
-% \psframe[fillstyle=solid,fillcolor=yellow,addfillstyle=boxfill]#1}
-% \newcommand{\Neighbor}[2]{%
-% \begin{pspicture}(5,5)
-% \rput{*0}(2.5,2.5){\StylePosition{#1}}
-% \ReceiveData{(0.5,0)(4.5,0.5)}{\Central}\SendArea{(0.5,0.5)(4.5,1)}
-% \SubDomain{(5,2)}{(0.5,0.5)(4.5,3)}{dashed}{#2}%
-% ^^A % Receive and send arrows
-% \pcarc[arcangle=45,arrows=->](0.5,-1.25)(0.5,0.25)
-% \pcarc[arcangle=45,arrows=->,linestyle=dotted,dotsep=2pt](4.5,0.75)(4.5,-0.75)
-% \end{pspicture}}
-% \psset{dimen=middle,dotscale=2,fillloopadd=2}
-% \begin{pspicture}(-5.7,-5.7)(5.7,5.7)
-% ^^A % Central domain
-% \rput(0,0){%
-% \begin{pspicture}(5,5)
-% ^^A % Receive from West, East, North and South
-% \ReceiveData{(0,0.5)(0.5,4.5)}{\West} \ReceiveData{(4.5,0.5)(5,4.5)}{\East}
-% \ReceiveData{(0.5,4.5)(4.5,5)}{\North}\ReceiveData{(0.5,0)(4.5,0.5)}{\South}
-% ^^A % send area for West, East, North and South
-% \SendArea{(0.5,0.5)(1,4.5)} \SendArea{(4,0.5)(4.5,4.5)}
-% \SendArea{(0.5,0.5)(4.5,1)} \SendArea{(0.5,4)(4.5,4.5)}
-% ^^A % Central domain
-% \SubDomain{(5,5)}{(0.5,0.5)(4.5,4.5)}{solid}{\Central}
-% ^^A % Redraw overlapped linesY
-% \psline(1,0.5)(1,4.5) \psline(4,0.5)(4,4.5)
-% ^^A % Two crossesY
-% \rput(1.5,4){\Cross} \rput(2,2){\Cross}
-% \end{pspicture}}
-% ^^A % The four neighborsY
-% \rput(0,5.5){\Neighbor{N}{\North}} \rput{-90}(5.5,0){\Neighbor{E}{\East}}
-% \rput{90}(-5.5,0){\Neighbor{W}{\West}} \rput{180}(0,-5.5){\Neighbor{S}{\South}}
-% \end{pspicture}
-% \end{lstlisting}
-%
-%
-%
-% Bibliography
-% \begin{thebibliography}{99}
-% \bibitem{PostScript95} Adobe, Systems~Incorporated, \emph{PostScript Language
-% Reference Manual}, Addison-Wesley, 2~edition, 1995.
-%
-% \bibitem{Bolek98} Piotr Bolek, \MP{} and patterns, \emph{\TUB}, Volume~19,
-% Number~3, pages 276--283, September 1998, \CTANref{mpattern}.
-%
-% \bibitem{MLgraphTSI} Emmanuel Chailloux, Guy Cousineau and Asc\'ander
-% Su\'arez, Programmation fonctionnelle de graphismes pour la production
-% d'illustrations techniques, \emph{Technique et science informatique},
-% Volume~15, Number~7, pages 977--1007, 1996 (in french).
-%
-% \bibitem{Deledicq97} Andr\'e Deledicq, \emph{Le monde des pavages}, ACL
-% \'Editions, 1997 (in french).
-%
-% \bibitem{EsperetGirou98} Philippe Esperet and Denis Girou,
-% Coloriage du pavage dit de Truchet, Cahiers GUTenberg, Number~31,
-% pages 5--18, December~1998 (in french).
-%
-% \bibitem{Girou94} Denis Girou, Pr\'esentation de PSTricks, \emph{Cahiers
-% GUTenberg}, Number~16, pages 21--70, February~1994 (in french).
-%
-% \bibitem{LGC97} Michel Goossens, Sebastian Rahtz and Frank Mittelbach,
-% \emph{The \LaTeX{} Graphics Companion}, Addison-Wesley, 2005.
-%
-% \bibitem{GS87} Branko Gr\"unbaum and Geoffrey Shephard, \emph{Tilings and
-% Patterns}, Freeman and Company, 1987.
-%
-% \bibitem{Hoenig97} Alan Hoenig, \emph{\TeX{} Unbound: \LaTeX{} \& \TeX{}
-% Strategies, Fonts, Graphics, and More}, Oxford University Press, 1997.
-%
-% \bibitem{XYpic} Kristoffer~H. Rose and Ross Moore, \XYpic. Pattern and Tile
-% extension, available from \CTAN, 1991-1998, \CTANref{xypic}.
-%
-% \bibitem{LAAN96} Kees van der Laan, Paradigms: Just a little bit of PostScript,
-% \emph{MAPS}, Volume~17, pages 137--150, 1996.
-%
-% \bibitem{LAAN97} Kees van der Laan, Tiling in PostScript and \MF{} -- Escher's
-% wink, \emph{MAPS}, Volume~19, Number~2, pages 39--67, 1997.
-%
-% \bibitem{vanZandt93} Timothy Van Zandt, PSTricks. PostScript macros for
-% Generic \TeX, available from \CTAN, 1993, \CTANref{pstricks}.
-%
-% \bibitem{vanZandtGirou94} Timothy Van Zandt and Denis Girou, Inside PSTricks,
-% \emph{\TUB}, Volume~15, Number~3, pages 239--246, September 1994.
-%
-%
-% \bibitem{voss07} Herbert Vo\ss, PSTricks -- Graphics for \TeX\ and \LaTeX, DANTE/Lehmanns, 4th ed., 2007.
-% \bibitem{Wang65} Hao Wang, Games, Logic and Computers, \emph{Scientific
-% American}, pages 98--106, November 1965.
-% \end{thebibliography}
-%
-%
-% \StopEventually{}
-%
-% ^^A .................... End of the documentation part ....................
-%
-% \section{Driver file}
-%
-% The next bit of code contains the documentation driver file for \TeX{},
-% i.e., the file that will produce the documentation you are currently
-% reading. It will be extracted from this file by the \texttt{docstrip}
-% program.
-%
-% \begin{macrocode}
-%<*driver>
-\documentclass{ltxdoc}
-\GetFileInfo{pst-fill.dtx}
-%
-\usepackage[T1]{fontenc}
-\usepackage{lmodern} % For PDF
-\usepackage{graphicx} % `graphicx' LaTeX standard package
-\usepackage{showexpl}
-\usepackage{mflogo} % For the MetaFont and MetaPost logos
-\input{random.tex} % Random macros from Donald Arseneau
-\usepackage{url} % URLs convenient typesetting
-\usepackage{multido} % General loop macro
-\usepackage[dvipsnames]{pstricks} % PSTricks with the `color' extension
-\usepackage{pst-text} % PSTricks package for character path
-\usepackage{pst-grad} % PSTricks package for gradient filling
-\usepackage{pst-node} % PSTricks package for nodes
-\usepackage[tiling]{pst-fill} % PSTricks package for filling/tiling
-%
-\AtBeginDocument{%
-% \OnlyDescription % comment out for implementation details
- \EnableCrossrefs
- \CodelineIndex
- \RecordChanges}
-\AtEndDocument{%
- \PrintIndex
- \setcounter{IndexColumns}{1}
- \PrintChanges}
-\hbadness=7000 % Over and under full box warnings
-\hfuzz=3pt
-\begin{document}
- \DocInput{pst-fill.dtx}
-\end{document}
-%</driver>
-% \end{macrocode}
-%
-% \section{\texttt{pst-fill} \LaTeX{} wrapper}
-%
-% \begin{macrocode}
-%<*latex-wrapper>
-\RequirePackage{pstricks}
-\ProvidesPackage{pst-fill}[2005/09/13 package wrapper for
- pst-fill.tex (hv)]
-\DeclareOption{tiling}{\def\PstTiling{true}}
-\ProcessOptions\relax
-\input{pst-fill.tex}
-\ProvidesFile{pst-fill.tex}
- [\filedate\space v\fileversion\space `PST-fill' (tvz,dg)]
-%</latex-wrapper>
-% \end{macrocode}
-%
-%
-% \section{Pst-Fill Package{} code}
-%
-% \begin{macrocode}
-%<*pst-fill>
-% \end{macrocode}
-%
-% \subsection{Preamble}
-%
-% Who we are.
-%
-% \begin{macrocode}
-\def\fileversion{1.01}
-\def\filedate{2007/03/10}
-\message{`PST-Fill' v\fileversion, \filedate\space (tvz,dg,hv)}
-\csname PSTboxfillLoaded\endcsname
-\let\PSTboxfillLoaded\endinput
-% \end{macrocode}
-%
-% Require the main PSTricks package.
-%
-% \begin{macrocode}
-\ifx\PSTricksLoaded\endinput\else\input pstricks.tex\fi
-% \end{macrocode}
-%
-% interface to the extended `\textsf{keyval}' package.
-%
-% \begin{macrocode}
-\ifx\PSTXKeyLoaded\endinput\else\input pst-xkey\fi
-%
-% \end{macrocode}
-%
-% Catcodes changes and defining the family name for xkeyval.
-%
-% \begin{macrocode}
-\edef\PstAtCode{\the\catcode`\@}\catcode`\@=11\relax
-
-\pst@addfams{pst-fill}
-%
-% \end{macrocode}
-%
-%
-% \subsection{The size of the box}
-% \begin{macro}{pst@@boxfillsize}
-% \begin{macrocode}
-%
-\def\pst@@boxfillsize#1(#2,#3)#4(#5,#6)#7(#8\@nil{%
- \begingroup
- \ifx\@empty#7\relax
- \pst@dima\z@
- \pst@dimb\z@
- \pssetxlength\pst@dimc{#2}%
- \pssetylength\pst@dimd{#3}%
- \else
- \pssetxlength\pst@dima{#2}%
- \pssetylength\pst@dimb{#3}%
- \pssetxlength\pst@dimc{#5}%
- \pssetylength\pst@dimd{#6}%
- \fi
- \xdef\pst@tempg{%
- \pst@dima=\number\pst@dima sp
- \pst@dimb=\number\pst@dimb sp
- \pst@dimc=\number\pst@dimc sp
- \pst@dimd=\number\pst@dimd sp }%
- \endgroup
- \let\psk@boxfillsize\pst@tempg}
-% \end{macrocode}
-% \end{macro}
-%
-
-% \subsection{Definition of the parameters}
-%
-% \begin{macrocode}
-\define@key[psset]{pst-fill}{boxfillsize}{%
- \def\pst@tempg{#1}\def\pst@temph{auto}%
- \ifx\pst@tempg\pst@temph
- \let\psk@boxfillsize\relax
- \else
- \pst@@boxfillsize#1(\z@,\z@)\@empty(\z@,\z@)(\@nil
- \fi}
-\psset{boxfillsize={(-15cm,-15cm)(15cm,15cm)}}
-\define@key[psset]{pst-fill}{boxfillcolor}{\pst@getcolor{#1}\psboxfillcolor}
-\psset{boxfillcolor=black}% hv
-\define@key[psset]{pst-fill}{boxfillangle}{\pst@getangle{#1}\psk@boxfillangle}
-\psset{boxfillangle=0}
-\define@key[psset]{pst-fill}{fillsepx}{%
- \pst@getlength{#1}\psk@fillsepx}
-\define@key[psset]{pst-fill}{fillsepy}{%
- \pst@getlength{#1}\psk@fillsepy}
-\define@key[psset]{pst-fill}{fillsep}{%
- \pst@getlength{#1}\psk@fillsepx%
- \let\psk@fillsepy\psk@fillsepx}
-\psset{fillsep=2pt}
-
-\ifx\PstTiling\@undefined
- \define@key[psset]{pst-fill}{fillcycle}{\pst@getint{#1}\psk@fillcycle}
- \psset{fillcycle=0}
-\else
- \define@key[psset]{pst-fill}{fillangle}{\pst@getangle{#1}\psk@boxfillangle}
- \define@key[psset]{pst-fill}{fillsize}{%
- \def\pst@tempg{#1}\def\pst@temph{auto}%
- \ifx\pst@tempg\pst@temph\let\psk@boxfillsize\relax
- \else\pst@@boxfillsize#1(\z@,\z@)\@empty(\z@,\z@)(\@nil\fi}
- \psset{fillsep=0,fillsize=auto}
- \define@key[psset]{pst-fill}{fillcyclex}{\pst@getint{#1}\psk@fillcyclex}
- \define@key[psset]{pst-fill}{fillcycley}{\pst@getint{#1}\psk@fillcycley}
- \define@key[psset]{pst-fill}{fillcycle}{%
- \pst@getint{#1}\psk@fillcyclex\let\psk@fillcycley\psk@fillcyclex}
- \psset{fillcycle=0}
- \define@key[psset]{pst-fill}{fillmovex}{\pst@getlength{#1}\psk@fillmovex}
- \define@key[psset]{pst-fill}{fillmovey}{\pst@getlength{#1}\psk@fillmovey}
- \define@key[psset]{pst-fill}{fillmove}{%
- \pst@getlength{#1}\psk@fillmovex\let\psk@fillmovey\psk@fillmovex}
- \psset{fillmove=0pt}
- \define@key[psset]{pst-fill}{fillloopaddx}{\pst@getint{#1}\psk@fillloopaddx}
- \define@key[psset]{pst-fill}{fillloopaddy}{\pst@getint{#1}\psk@fillloopaddy}
- \define@key[psset]{pst-fill}{fillloopadd}{%
- \pst@getint{#1}\psk@fillloopaddx\let\psk@fillloopaddy\psk@fillloopaddx}
- \psset{fillloopadd=0}
-% \end{macrocode}
-%
-% \begin{macrocode}
-% For debugging (to debug, set PstDebug=1)
-% we now use the one from pstricks to prevent a clash with package
-% pstricks 2004-06-22
-%% \define@key[psset]{pst-fill}{PstDebug}{\pst@getint{#1}\psk@PstDebug}
- \psset{PstDebug=0}
-\fi
-% DG addition end
-% \end{macrocode}
-
-% \subsection{Definition of the fill box}
-% \begin{macro}{psboxfill}
-% \begin{macrocode}
-\newbox\pst@fillbox
-\def\psboxfill{\pst@killglue\pst@makebox\psboxfill@i}
-\def\psboxfill@i{\setbox\pst@fillbox\box\pst@hbox\ignorespaces}
-% \end{macrocode}
-% \end{macro}
-% \subsection{The main macros}
-%
-% \begin{macro}{psfs@boxfill}
-% \begin{macrocode}
-\def\psfs@boxfill{%
- \ifvoid\pst@fillbox
- \@pstrickserr{Fill box is empty. Use \string\psboxfill\space first.}\@ehpa
- \else
- \ifx\psk@boxfillsize\relax \pst@AutoBoxFill
- \else\pst@ManualBoxFill\fi
- \fi}
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{pst@ManualBoxFill}
-% \begin{macrocode}
-\def\pst@ManualBoxFill{%
- \leavevmode
- \begingroup
- \pst@FlushCode
- \begin@psclip
- \pstVerb{clip}%
- \expandafter\pst@AddFillBox\psk@boxfillsize
- \end@psclip
- \endgroup}
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{pst@FlushCode}
-% \begin{macrocode}
-\def\pst@FlushCode{%
- \pst@Verb{%
- /mtrxc CM def
- CP CP T
- \tx@STV
- \psk@origin
- \psk@swapaxes
- \pst@newpath
- \pst@code
- mtrxc setmatrix
- moveto
- 0 setgray}%
- \gdef\pst@code{}}
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{pst@AddFillBox}
-% \begin{macrocode}
-\def\pst@AddFillBox#1 #2 #3 #4 {%
- \begingroup
- \setbox\pst@fillbox=\vbox{%
- \hbox{\unhcopy\pst@fillbox\kern\psk@fillsepx\p@}%
- \vskip\psk@fillsepy\p@}%
- \psk@boxfillsize
- \pst@cnta=\pst@dimc
- \advance\pst@cnta-\pst@dima
- \divide\pst@cnta\wd\pst@fillbox
- \pst@cntb=\pst@dimd
- \advance\pst@cntb-\pst@dimb
- \pst@dimd=\ht\pst@fillbox
- \divide\pst@cntb\pst@dimd
- \def\pst@tempa{%
- \pst@tempg
- \copy\pst@fillbox
- \advance\pst@cntc\@ne
- \ifnum\pst@cntc<\pst@cntd\expandafter\pst@tempa\fi}%
- \let\pst@tempg\relax
- \pst@cntc-\tw@
- \pst@cntd\pst@cnta
- \setbox\pst@fillbox=\hbox to \z@{%
- \kern\pst@dima
- \kern-\wd\pst@fillbox
- \pst@tempa
- \hss}%
- \pst@cntd\pst@cntb
-%% DG modification begin - Dec. 11, 1997 - Patch 2
- \ifx\PstTiling\@undefined
- \ifnum\psk@fillcycle=\z@\pst@ManualFillCycle\fi
- \else
- \ifnum\psk@fillcyclex=\z@\pst@ManualFillCycle\fi
- \fi
-%% DG modification end
- \global\setbox\pst@boxg=\vbox to\z@{%
- \offinterlineskip
- \vss
- \pst@tempa
- \vskip\pst@dimb}%
- \endgroup
- \setbox\pst@fillbox\box\pst@boxg
- \pst@rotate\psk@boxfillangle\pst@fillbox
- \box\pst@fillbox}
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{pst@ManualFillCycle}
-% \begin{macrocode}
-\def\pst@ManualFillCycle{%
- \ifx\PstTiling\@undefined
- \pst@cntg=\psk@fillcycle
- \else
- \pst@cntg=\psk@fillcyclex
- \fi
- \pst@dimg=\wd\pst@fillbox
- \ifnum\pst@cntg=\z@
- \else
- \divide\pst@dimg\pst@cntg
- \fi
- \ifnum\pst@cntg<\z@\pst@cntg=-\pst@cntg\fi
- \advance\pst@cntg\m@ne
- \pst@cnth=\pst@cntg
- \def\pst@tempg{%
- \ifnum\pst@cnth<\pst@cntg\advance\pst@cnth\@ne\else\pst@cnth\z@\fi
- \moveright\pst@cnth\pst@dimg}}
-% \end{macrocode}
-% \end{macro}
-%
-%% Auto box fill: !! Fix dictionary
-%
-% \subsection{The PostScript subroutines}
-%
-% \begin{macrocode}
-%% DG addition begin - Apr. 8, 1997 and Dec. 1997 - Patch 2
-\ifx\PstTiling\@undefined
-\pst@def{AutoFillCycle}<%
- /c ED
- /n 0 def
- /s {
- /x x w c div n mul add def
- /n n c abs 1 sub lt { n 1 add } { 0 } ifelse def
- } def>
-
-\pst@def{BoxFill}<%
- gsave
- gsave \tx@STV CM grestore dtransform CM idtransform
- abs /h ED abs /w ED
- pathbbox
- h div round 2 add cvi /y2 ED
- w div round 2 add cvi /x2 ED
- h div round 2 sub cvi /y1 ED
- w div round 2 sub cvi /x1 ED
- /y2 y2 y1 sub def
- /x2 x2 x1 sub def
- CP
- y1 h mul sub neg /y1 ED
- x1 w mul sub neg /x1 ED
- clip
- y2 {
- /x x1 def
- s
- x2 {
- save CP x y1
-%% patch 4 hv --------------
- \ifx\VTeXversion\undefined
- \else
-%%============ mv: 09-10-01 ??? this is likely to be a right change
- neg
-%%============
- \fi
-%% end patch 4
-T moveto Box restore
- /x x w add def
- } repeat
- /y1 y1 h add def
- } repeat
- % Next line not useful... To see that, suppress clipping (DG)
- CP x y1 T moveto Box
- currentpoint currentfont grestore setfont moveto>
-\else
-%% DG modification begin - Apr. 8, 1997 and Nov. / Dec. 1997 - Patch 2
-\pst@def{AutoFillCycleX}<%
- /cX ED
- /nX 0 def
- /CycleX {
- /x x w cX div nX mul add def
- /nX nX cX abs 1 sub lt { nX 1 add } { 0 } ifelse def
- } def>
-\pst@def{AutoFillCycleY}<%
- /cY ED
- /mY 0 def
- /nY 0 def
- /CycleY {
- /y1 y1 h cY div mY mul sub def
- nY cY abs 1 sub lt { /nY nY 1 add def /mY 1 def }
- { /nY 0 def /mY cY abs 1 sub neg def } ifelse
- } def>
-
-\pst@def{BoxFill}<%
- gsave
- gsave \tx@STV CM grestore dtransform CM idtransform
- abs /h ED abs /w ED
- pathbbox
- h div round 2 add cvi /y2 ED
- w div round 2 add cvi /x2 ED
- h div round 2 sub cvi /y1 ED
- w div round 2 sub cvi /x1 ED
- /CoefLoopX 0 def
- /CoefLoopY 0 def
- /CoefMoveX 0 def
- /CoefMoveY 0 def
- \psk@boxfillangle\space 0 ne {/CoefLoopX 8 def /CoefLoopY 8 def} if
- \psk@fillcyclex\space 0 ne {/CoefLoopX CoefLoopX 1 add def} if
- \psk@fillcycley\space 0 ne {/CoefLoopY CoefLoopY 1 add def} if
- \psk@fillmovex\space 0 ne
- {/CoefLoopX CoefLoopX 2 add def
- \psk@fillmovex\space 0 gt {/CoefMoveX CoefLoopX def}
- {/CoefMoveX CoefLoopX neg def} ifelse} if
- \psk@fillmovey\space 0 ne
- {/CoefLoopY CoefLoopY 2 add def
- \psk@fillmovey\space 0 gt {/CoefMoveY CoefLoopY def}
- {/CoefMoveY CoefLoopY neg def} ifelse} if
- \psk@fillsepx\space 0 ne {/CoefLoopX CoefLoopX 1 add def} if
- \psk@fillsepy\space 0 ne {/CoefLoopY CoefLoopY 1 add def} if
- /CoefLoopX CoefLoopX \psk@fillloopaddx\space add def
- /CoefLoopY CoefLoopY \psk@fillloopaddy\space add def
- /x2 x2 x1 sub 4 sub CoefLoopX 2 mul add def
- /y2 y2 y1 sub 4 sub CoefLoopY 2 mul add def
-%% We must fix the origin of tiling, as it must not vary according other stuff
-%% in the page!
- w x1 CoefLoopX add CoefMoveX add mul
- h y1 y2 add 1 sub CoefLoopY sub CoefMoveY sub mul moveto
- CP
- y1 h mul sub neg /y1 ED
- x1 w mul sub neg /x1 ED
-%% hv 2004-06-22 to prevent clash with pst-gr3d
-%% \psk@PstDebug 0 eq {clip} if
- \Pst@Debug 0 eq {clip} if
-%% end hv
- \psk@fillmovex\space \psk@fillmovey
- gsave \tx@STV CM grestore dtransform CM idtransform
- /hmove ED /wmove ED
- /row 0 def
- y2 {
- /row row 1 add def
- /column 0 def
- /x x1 def
- CycleX
- save
- x2 {
- /column column 1 add def
- CycleY
- save CP x y1
-%% patch 4 hv --------------
- \ifx\VTeXversion\undefined
- \else
-%%============ mv: 09-10-01 ??? this is likely to be a right change
- neg
-%%============
- \fi
- T moveto Box restore
- /x x w add def
- 0 hmove translate
- } repeat
- restore
- /y1 y1 h add def
- wmove 0 translate
- } repeat
- currentpoint currentfont grestore setfont moveto>
-\fi
-% \end{macrocode}
-
-% \begin{macrocode}
-\def\pst@AutoBoxFill{%
- \leavevmode
- \begingroup
- \pst@stroke
- \pst@FlushCode
- \pst@Verb{\psk@boxfillangle\space \tx@RotBegin}%
- \pstVerb{\pst@dict /Box \pslbrace end}%
- \ifx\PstTiling\@undefined
- \else
- \ifx\pst@tempa\@undefined % Undefined for instance for \pscharpath
- \else\ifx\pst@tempa\@empty\else
- \def\pst@temph{0}%
- \ifx\pst@tempa\pst@temph
- \else
- \pstVerb{/TR {pop pop currentpoint translate \pst@tempa\space translate } def}%
- \fi
- \fi\fi
- \fi
- \hbox to \z@{\vbox to\z@{\vss\copy\pst@fillbox\vskip-\dp\pst@fillbox}\hss}%
- \ifx\PstTiling\@undefined
- \pstVerb{%
- tx@Dict begin \psrbrace def
- \ifnum\psk@fillcycle=\z@
- /s {} def
- \else
- \psk@fillcycle \tx@AutoFillCycle
- \fi
- \pst@number{\wd\pst@fillbox}%
- \psk@fillsepx\space add
- \pst@number{\ht\pst@fillbox}%
- \pst@number{\dp\pst@fillbox}%
- \psk@fillsepy\space add add
- \tx@BoxFill
- end}%
- \else
- \pstVerb{%
- tx@Dict begin \psrbrace def
- \ifnum\psk@fillcyclex=\z@
- /CycleX {} def
- \else
- \psk@fillcyclex\space \tx@AutoFillCycleX
- \fi
- \ifnum\psk@fillcycley=\z@
- /CycleY {} def
- \else
- \psk@fillcycley\space \tx@AutoFillCycleY
- \fi
- \pst@number{\wd\pst@fillbox}%
- \psk@fillsepx\space add
- \pst@number{\ht\pst@fillbox}%
- \pst@number{\dp\pst@fillbox}%
- \psk@fillsepy\space add add
- \tx@BoxFill
- end}%
- \fi
- \pst@Verb{\tx@RotEnd}%
- \endgroup}
-% \end{macrocode}
-% \subsection{Closing}
-%
-% Catcodes restoration.
-%
-% \begin{macrocode}
-\catcode`\@=\PstAtCode\relax
-% \end{macrocode}
-%
-% \begin{macrocode}
-%</pst-fill>
-% \end{macrocode}
-%
-% \Finale
-%
-\endinput
-%%
-%% End of file `pst-fill.dtx'
diff --git a/graphics/pstricks/contrib/pst-fill/pst-fill.ins b/graphics/pstricks/contrib/pst-fill/pst-fill.ins
deleted file mode 100644
index 67c9404c2f..0000000000
--- a/graphics/pstricks/contrib/pst-fill/pst-fill.ins
+++ /dev/null
@@ -1,37 +0,0 @@
-%% `pst-fill.ins'
-%%
-%% Docstrip installation instruction file for docstyle `pst-fill'
-%%
-%% Herbert Voss <voss@pstricks.de>
-%%
-%% 2006-11-06
-%%
-\def\batchfile{pst-fill.ins}
-\input docstrip.tex
-\keepsilent
-\Msg{*** Generating the `pst-fill' package ***}
-\askforoverwritefalse
-\generate{\file{pst-fill.tex}{\from{pst-fill.dtx}{pst-fill}}}
-\generate{\file{pst-fill.sty}{\from{pst-fill.dtx}{latex-wrapper}}}
-
-\ifToplevel{%
-\Msg{***********************************************************}
-\Msg{*}
-\Msg{* To finish the installation you have to move the files}
-\Msg{* pst-fill.sty and pst-fill.tex in a directory/folder searched by TeX.}
-\Msg{*}
-\Msg{* To produce the documentation, run the file `pst-fill.dtx'}
-\Msg{* through LaTeX.}
-\Msg{*}
-\Msg{* If you require the commented code, desactivating the}
-\Msg{* OnlyDescription macro, you must recompile, execute:}
-\Msg{* `makeindex -s gind.ist pst-fill'}
-\Msg{* `makeindex -s gglo.ist -o pst-fill.gls pst-fill.glo'}
-\Msg{* and recompile.}
-\Msg{*}
-\Msg{***********************************************************}
-}
-
-\endinput
-%%
-%% End of file `pst-fill.ins'
diff --git a/graphics/pstricks/contrib/pst-fill/pst-fill.pdf b/graphics/pstricks/contrib/pst-fill/pst-fill.pdf
deleted file mode 100644
index f09defc07e..0000000000
--- a/graphics/pstricks/contrib/pst-fill/pst-fill.pdf
+++ /dev/null
Binary files differ
diff --git a/graphics/pstricks/contrib/pst-fill/tex/pst-fill.tex b/graphics/pstricks/contrib/pst-fill/tex/pst-fill.tex
new file mode 100644
index 0000000000..53b2345838
--- /dev/null
+++ b/graphics/pstricks/contrib/pst-fill/tex/pst-fill.tex
@@ -0,0 +1,472 @@
+%%
+%% This is Package `pst-fill'
+%%
+%% Denis Girou (CNRS/IDRIS - France) <Denis.Girou@idris.fr>
+%% Herbert Voss <hvoss@tug.org>
+%% (C) 2003-2021
+%%
+%% This program can be redistributed and/or modified under the terms
+%% of the LaTeX Project Public License Distributed from CTAN archives
+%% in directory macros/latex/base/lppl.txt.
+%%
+%% DESCRIPTION:
+%% `pst-fill' is a PSTricks package for filling and tiling areas
+%%
+%% \pscircle[linestyle=none,fillstyle=solid,fillcolor=yellow,fillsep=0.5,
+%% addfillstyle=boxfill](2,2){2}
+\ifx\PSTricksLoaded\endinput\else\input pstricks.tex\fi
+\ifx\PSTXKeyLoaded\endinput\else\input pst-xkey\fi
+\def\fileversion{1.02}
+\def\filedate{2021/10/01}
+\message{`PST-Fill' v\fileversion, \filedate\space (tvz,dg,hv)}
+\csname PSTboxfillLoaded\endcsname
+\let\PSTboxfillLoaded\endinput
+\edef\PstAtCode{\the\catcode`\@}\catcode`\@=11\relax
+
+\pst@addfams{pst-fill}
+\def\pst@@boxfillsize#1(#2,#3)#4(#5,#6)#7(#8\@nil{%
+ \begingroup
+ \ifx\@empty#7\relax
+ \pst@dima\z@
+ \pst@dimb\z@
+ \pssetxlength\pst@dimc{#2}%
+ \pssetylength\pst@dimd{#3}%
+ \else
+ \pssetxlength\pst@dima{#2}%
+ \pssetylength\pst@dimb{#3}%
+ \pssetxlength\pst@dimc{#5}%
+ \pssetylength\pst@dimd{#6}%
+ \fi
+ \xdef\pst@tempg{%
+ \pst@dima=\number\pst@dima sp
+ \pst@dimb=\number\pst@dimb sp
+ \pst@dimc=\number\pst@dimc sp
+ \pst@dimd=\number\pst@dimd sp }%
+ \endgroup
+ \let\psk@boxfillsize\pst@tempg}
+
+\define@key[psset]{pst-fill}{boxfillsize}{%
+ \def\pst@tempg{#1}\def\pst@temph{auto}%
+ \ifx\pst@tempg\pst@temph
+ \let\psk@boxfillsize\relax
+ \else
+ \pst@@boxfillsize#1(\z@,\z@)\@empty(\z@,\z@)(\@nil
+ \fi}
+\psset{boxfillsize={(-15cm,-15cm)(15cm,15cm)}}
+\define@key[psset]{pst-fill}{boxfillcolor}{\pst@getcolor{#1}\psboxfillcolor}
+\psset{boxfillcolor=black}% hv
+\define@key[psset]{pst-fill}{boxfillangle}{\pst@getangle{#1}\psk@boxfillangle}
+\psset{boxfillangle=0}
+\define@key[psset]{pst-fill}{fillsepx}{\pst@getlength{#1}\psk@fillsepx}
+\define@key[psset]{pst-fill}{fillsepy}{\pst@getlength{#1}\psk@fillsepy}
+\define@key[psset]{pst-fill}{fillsep}{%
+ \pst@getlength{#1}\psk@fillsepx%
+ \let\psk@fillsepy\psk@fillsepx}
+\psset{fillsep=2pt}
+
+\ifx\PstTiling\@undefined
+ \define@key[psset]{pst-fill}{fillcycle}{\pst@getint{#1}\psk@fillcycle}
+ \psset{fillcycle=0}
+\else
+ \define@key[psset]{pst-fill}{fillangle}{\pst@getangle{#1}\psk@boxfillangle}
+ \define@key[psset]{pst-fill}{fillsize}{%
+ \def\pst@tempg{#1}\def\pst@temph{auto}%
+ \ifx\pst@tempg\pst@temph\let\psk@boxfillsize\relax
+ \else\pst@@boxfillsize#1(\z@,\z@)\@empty(\z@,\z@)(\@nil\fi}
+ \psset{fillsep=0,fillsize=auto}
+ \define@key[psset]{pst-fill}{fillcyclex}{\pst@getint{#1}\psk@fillcyclex}
+ \define@key[psset]{pst-fill}{fillcycley}{\pst@getint{#1}\psk@fillcycley}
+ \define@key[psset]{pst-fill}{fillcycle}{%
+ \pst@getint{#1}\psk@fillcyclex\let\psk@fillcycley\psk@fillcyclex}
+ \psset{fillcycle=0}
+ \define@key[psset]{pst-fill}{fillmovex}{\pst@getlength{#1}\psk@fillmovex}
+ \define@key[psset]{pst-fill}{fillmovey}{\pst@getlength{#1}\psk@fillmovey}
+ \define@key[psset]{pst-fill}{fillmove}{%
+ \pst@getlength{#1}\psk@fillmovex\let\psk@fillmovey\psk@fillmovex}
+ \psset{fillmove=0pt}
+ \define@key[psset]{pst-fill}{fillloopaddx}{\pst@getint{#1}\psk@fillloopaddx}
+ \define@key[psset]{pst-fill}{fillloopaddy}{\pst@getint{#1}\psk@fillloopaddy}
+ \define@key[psset]{pst-fill}{fillloopadd}{%
+ \pst@getint{#1}\psk@fillloopaddx\let\psk@fillloopaddy\psk@fillloopaddx}
+ \psset{fillloopadd=0}
+%% \define@key[psset]{pst-fill}{PstDebug}{\pst@getint{#1}\psk@PstDebug}
+ \psset{PstDebug=0}
+\fi
+
+\def\pstFillSetDefaults{%
+ \psset{%
+ boxfillsize={(-15cm,-15cm)(15cm,15cm)},
+ boxfillcolor=black,
+ boxfillangle=0,
+ fillsep=2pt,
+ fillsep=0,fillsize=auto,
+ fillcycle=0,
+ fillmove=0pt,
+ fillloopadd=0,
+ PstDebug=0}%
+}
+
+
+\def\txfillDict{ fill@Dict begin }
+
+\newbox\pst@fillbox
+\def\psboxfill{\pst@killglue\pst@makebox\psboxfill@i}
+\def\psboxfill@i{\null\setbox\pst@fillbox\box\pst@hbox\ignorespaces}% \null to prevent empty page
+\def\psfs@boxfill{%
+ \ifvoid\pst@fillbox
+ \@pstrickserr{Fill box is empty. Use \string\psboxfill\space first.}\@ehpa
+ \else
+ \ifx\psk@boxfillsize\relax \pst@AutoBoxFill
+ \else\pst@ManualBoxFill\fi
+ \fi}
+
+\def\pst@ManualBoxFill{%
+ \leavevmode
+ \begingroup
+ \pst@FlushCode
+ \begin@psclip
+ \pstVerb{clip}%
+ \expandafter\pst@AddFillBox\psk@boxfillsize
+ \end@psclip
+ \endgroup}
+
+\def\pst@FlushCode{%
+ \pst@Verb{%
+ /mtrxc CM def
+ CP CP T
+ \tx@STV
+ \psk@origin
+ \psk@swapaxes
+ \pst@newpath
+ \pst@code
+ mtrxc setmatrix
+ moveto
+ 0 setgray}%
+ \gdef\pst@code{}}
+
+\def\pst@AddFillBox#1 #2 #3 #4 {%
+ \begingroup
+ \setbox\pst@fillbox=\vbox{%
+ \hbox{\unhcopy\pst@fillbox\kern\psk@fillsepx\p@}%
+ \vskip\psk@fillsepy\p@}%
+ \psk@boxfillsize
+ \pst@cnta=\pst@dimc
+ \advance\pst@cnta-\pst@dima
+ \divide\pst@cnta\wd\pst@fillbox
+ \pst@cntb=\pst@dimd
+ \advance\pst@cntb-\pst@dimb
+ \pst@dimd=\ht\pst@fillbox
+ \divide\pst@cntb\pst@dimd
+ \def\pst@@tempA{%
+ \pst@tempg
+ \copy\pst@fillbox
+ \advance\pst@cntc\@ne
+ \ifnum\pst@cntc<\pst@cntd\expandafter\pst@@tempA\fi}%
+ \let\pst@tempg\relax
+ \pst@cntc-\tw@
+ \pst@cntd\pst@cnta
+ \setbox\pst@fillbox=\hbox to \z@{%
+ \kern\pst@dima
+ \kern-\wd\pst@fillbox
+ \pst@@tempA
+ \hss}%
+ \pst@cntd\pst@cntb
+%% DG modification begin - Dec. 11, 1997 - Patch 2
+ \ifx\PstTiling\@undefined
+ \ifnum\psk@fillcycle=\z@\pst@ManualFillCycle\fi
+ \else
+ \ifnum\psk@fillcyclex=\z@\pst@ManualFillCycle\fi
+ \fi
+%% DG modification end
+ \global\setbox\pst@boxg=\vbox to\z@{%
+ \offinterlineskip
+ \vss
+ \pst@@tempA
+ \vskip\pst@dimb}%
+ \endgroup
+ \setbox\pst@fillbox\box\pst@boxg
+ \pst@rotate\psk@boxfillangle\pst@fillbox
+ \box\pst@fillbox}
+
+\def\pst@ManualFillCycle{%
+ \ifx\PstTiling\@undefined
+ \pst@cntg=\psk@fillcycle
+ \else
+ \pst@cntg=\psk@fillcyclex
+ \fi
+ \pst@dimg=\wd\pst@fillbox
+ \ifnum\pst@cntg=\z@
+ \else
+ \divide\pst@dimg\pst@cntg
+ \fi
+ \ifnum\pst@cntg<\z@\pst@cntg=-\pst@cntg\fi
+ \advance\pst@cntg\m@ne
+ \pst@cnth=\pst@cntg
+ \def\pst@tempg{%
+ \ifnum\pst@cnth<\pst@cntg\advance\pst@cnth\@ne\else\pst@cnth\z@\fi
+ \moveright\pst@cnth\pst@dimg}}
+
+\ifx\PstTiling\@undefined
+ \pst@def{AutoFillCycle}<%
+ fill@Dict begin
+ /c ED
+ /n 0 def
+ /s {
+ /x x w c div n mul add def
+ /n n c abs 1 sub lt { n 1 add } { 0 } ifelse def
+ } def
+ end
+ >
+\pst@def{BoxFill}<%
+ fill@Dict begin
+ gsave
+ gsave \tx@STV CM grestore dtransform CM idtransform
+ abs /h ED abs /w ED
+ pathbbox
+ h div round 2 add cvi /y2 ED
+ w div round 2 add cvi /x2 ED
+ h div round 2 sub cvi /y1 ED
+ w div round 2 sub cvi /x1 ED
+ /y2 y2 y1 sub def
+ /x2 x2 x1 sub def
+ CP
+ y1 h mul sub neg /y1 ED
+ x1 w mul sub neg /x1 ED
+ clip
+ y2 {
+ /x x1 def
+ s
+ x2 {
+ save CP x y1
+ \ifx\VTeXversion\undefined
+ \else
+ neg
+ \fi
+ T moveto Box restore
+ /x x w add def
+ } repeat
+ /y1 y1 h add def
+ } repeat
+ % Next line not useful... To see that, suppress clipping (DG)
+ CP x y1 T moveto Box
+ end
+ currentpoint currentfont grestore setfont moveto
+ >
+\else% Tiling is defined -----------------------------------
+ \pst@def{AutoFillCycleX}<
+% fill@Dict begin
+ /cX ED
+ /nX 0 def
+ /CycleX {
+ /x x w cX div nX mul add def
+ /nX nX cX abs 1 sub lt { nX 1 add } { 0 } ifelse def
+ } def
+% end
+ >
+ \pst@def{AutoFillCycleY}<%
+% fill@Dict begin
+ /cY ED
+ /mY 0 def
+ /nY 0 def
+ /CycleY {
+ /y1 y1 h cY div mY mul sub def
+ nY cY abs 1 sub lt { /nY nY 1 add def /mY 1 def }
+ { /nY 0 def /mY cY abs 1 sub neg def } ifelse
+ } def
+% end
+ >
+ \pst@def{BoxFill}<
+ \ifPSTlualatex
+ /save /gsave load def
+ /restore /grestore load def
+ fill@Dict begin
+ \fi
+ gsave
+ gsave \tx@STV CM grestore dtransform CM idtransform
+ abs /h ED abs /w ED
+ pathbbox
+ \ifPSTlualatex
+ h div 2 add cvi /y2 ED
+ w div 2 add cvi /x2 ED
+ h div 2 sub cvi /y1 ED
+ w div 2 sub cvi /x1 ED
+ \else
+ h div round 2 add cvi /y2 ED
+ w div round 2 add cvi /x2 ED
+ h div round 2 sub cvi /y1 ED
+ w div round 2 sub cvi /x1 ED
+ \fi
+ /CoefLoopX 0 def
+ /CoefLoopY 0 def
+ /CoefMoveX 0 def
+ /CoefMoveY 0 def
+ \psk@boxfillangle\space 0 ne {/CoefLoopX 8 def /CoefLoopY 8 def} if
+ \psk@fillcyclex\space 0 ne {/CoefLoopX CoefLoopX 1 add def} if
+ \psk@fillcycley\space 0 ne {/CoefLoopY CoefLoopY 1 add def} if
+ \psk@fillmovex\space 0 ne
+ {/CoefLoopX CoefLoopX 2 add def
+ \psk@fillmovex\space 0 gt {/CoefMoveX CoefLoopX def}
+ {/CoefMoveX CoefLoopX neg def} ifelse} if
+ \psk@fillmovey\space 0 ne
+ {/CoefLoopY CoefLoopY 2 add def
+ \psk@fillmovey\space 0 gt {/CoefMoveY CoefLoopY def}
+ {/CoefMoveY CoefLoopY neg def} ifelse} if
+ \psk@fillsepx\space 0 ne {/CoefLoopX CoefLoopX 1 add def} if
+ \psk@fillsepy\space 0 ne {/CoefLoopY CoefLoopY 1 add def} if
+ /CoefLoopX CoefLoopX \psk@fillloopaddx\space add def
+ /CoefLoopY CoefLoopY \psk@fillloopaddy\space add def
+ /x2 x2 x1 sub 4 sub CoefLoopX 2 mul add def
+ /y2 y2 y1 sub 4 sub CoefLoopY 2 mul add def
+ %% We must fix the origin of tiling, as it must not vary according other stuff in the page!
+ w x1 CoefLoopX add CoefMoveX add mul
+ h y1 y2 add 1 sub CoefLoopY sub CoefMoveY sub mul moveto
+ CP
+ y1 h mul sub neg /y1 ED
+ x1 w mul sub neg /x1 ED
+ \Pst@Debug 0 eq {clip} if
+ \psk@fillmovex\space \psk@fillmovey
+ gsave \tx@STV CM grestore
+ dtransform CM idtransform
+ /hmove ED /wmove ED
+ /row 0 def
+ y2 {
+ /row row 1 add def
+ /column 0 def
+ /x x1 def
+ CycleX
+ save
+ x2 {
+ /column column 1 add def
+ CycleY
+ save CP x y1
+ \ifPSTlualatex neg \fi
+ T moveto Box restore
+ /x x w add def
+ 0 hmove translate
+ } repeat
+ restore
+ /y1 y1 h add def
+ wmove 0 translate
+ } repeat
+ currentpoint
+ currentfont
+ grestore
+ setfont
+ moveto
+ \ifPSTlualatex end \fi
+ >
+\fi % edn of tiling=true
+
+\ifPSTlualatex
+ \def\pst@AutoBoxFill{%
+ \leavevmode
+ \begingroup
+ \pst@stroke
+ \pst@FlushCode
+ \pst@Verb{\psk@boxfillangle\space \tx@RotBegin}%
+ \pstVerb{
+ \pst@dict /Box [ /gsave cvx currentpoint /translate cvx \luaPSTbox\hbox{%
+ \ifx\PstTiling\@undefined
+ \else
+ \ifx\pst@tempa\@undefined % Undefined for instance for \pscharpath
+ \else\ifx\pst@tempa\@empty\else
+ \def\pst@temph{0}%
+ \ifx\pst@tempa\pst@temph
+ \else
+ \fi
+ \fi\fi
+ \fi
+ \hbox to \z@{\vbox to\z@{\vss\copy\pst@fillbox\vskip-\dp\pst@fillbox}\hss}%
+ } /.TeXBox findresource /grestore cvx ] cvx def
+ \ifx\PstTiling\@undefined
+ \ifnum\psk@fillcycle=\z@
+ /s {} def
+ \else
+ \psk@fillcycle \tx@AutoFillCycle
+ \fi
+ \else
+ \ifnum\psk@fillcyclex=\z@
+ /CycleX {} def
+ \else
+ \psk@fillcyclex\space \tx@AutoFillCycleX
+ \fi
+ \ifnum\psk@fillcycley=\z@
+ /CycleY {} def
+ \else
+ \psk@fillcycley\space \tx@AutoFillCycleY
+ \fi
+ \fi
+ \pst@number{\wd\pst@fillbox}%
+ \psk@fillsepx\space add
+ \pst@number{\ht\pst@fillbox}%
+ \pst@number{\dp\pst@fillbox}%
+ \psk@fillsepy\space add add
+ \tx@BoxFill
+ end
+ }%
+ \pst@Verb{\tx@RotEnd}%
+ \endgroup}
+\else%%%%%%%%%%%%%%% latex->dvips definition
+ \def\pst@AutoBoxFill{%
+ \leavevmode
+ \begingroup
+ \pst@stroke
+ \pst@FlushCode
+ \pst@Verb{\psk@boxfillangle\space \tx@RotBegin}%
+ \pstVerb{\pst@dict /Box \pslbrace end}%
+ \ifx\PstTiling\@undefined
+ \else
+ \ifx\pst@@tempA\@undefined % Undefined for instance for \pscharpath
+ \else\ifx\pst@@tempA\@empty\else
+ \def\pst@temph{0}%
+ \ifx\pst@@tempA\pst@temph
+ \else
+ \pstVerb{/TR {pop pop currentpoint translate \pst@@tempA\space translate } def}%
+ \fi
+ \fi\fi
+ \fi
+ \hbox to \z@{\vbox to\z@{\vss\copy\pst@fillbox\vskip-\dp\pst@fillbox}\hss}%
+ \ifx\PstTiling\@undefined
+ \pstVerb{%
+ tx@Dict begin \psrbrace def
+ \ifnum\psk@fillcycle=\z@
+ /s {} def
+ \else
+ \psk@fillcycle \tx@AutoFillCycle
+ \fi
+ \pst@number{\wd\pst@fillbox}%
+ \psk@fillsepx\space add
+ \pst@number{\ht\pst@fillbox}%
+ \pst@number{\dp\pst@fillbox}%
+ \psk@fillsepy\space add add
+ \tx@BoxFill
+ end}%
+ \else
+ \pstVerb{%
+ tx@Dict begin \psrbrace def
+ \ifnum\psk@fillcyclex=\z@
+ /CycleX {} def
+ \else
+ \psk@fillcyclex\space \tx@AutoFillCycleX
+ \fi
+ \ifnum\psk@fillcycley=\z@
+ /CycleY {} def
+ \else
+ \psk@fillcycley\space \tx@AutoFillCycleY
+ \fi
+ \pst@number{\wd\pst@fillbox}%
+ \psk@fillsepx\space add
+ \pst@number{\ht\pst@fillbox}%
+ \pst@number{\dp\pst@fillbox}%
+ \psk@fillsepy\space add add
+ \tx@BoxFill
+ end}%
+ \fi
+ \pst@Verb{\tx@RotEnd}%
+ \endgroup}
+\fi
+%
+\catcode`\@=\PstAtCode\relax
+\endinput
+%%
+%% End of file `pst-fill.tex'.