summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/source
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2006-11-30 04:07:01 +0000
committerKarl Berry <karl@freefriends.org>2006-11-30 04:07:01 +0000
commitd020974aa866ebf75c1a7136213c03c015c7402d (patch)
treec362e2511d64cefaf2b876bb39578952fc7742dc /Master/texmf-dist/source
parent0e16c58d10670a29d73183de0640f72f0857c829 (diff)
new pstricks pst-eps, pst-fill, pst-text
git-svn-id: svn://tug.org/texlive/trunk@2560 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/source')
-rw-r--r--Master/texmf-dist/source/generic/pst-fill/Makefile48
-rw-r--r--Master/texmf-dist/source/generic/pst-fill/pst-fill.dtx1822
-rw-r--r--Master/texmf-dist/source/generic/pst-fill/pst-fill.ins37
3 files changed, 1907 insertions, 0 deletions
diff --git a/Master/texmf-dist/source/generic/pst-fill/Makefile b/Master/texmf-dist/source/generic/pst-fill/Makefile
new file mode 100644
index 00000000000..3d55734c181
--- /dev/null
+++ b/Master/texmf-dist/source/generic/pst-fill/Makefile
@@ -0,0 +1,48 @@
+
+# `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) $<
+
+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/Master/texmf-dist/source/generic/pst-fill/pst-fill.dtx b/Master/texmf-dist/source/generic/pst-fill/pst-fill.dtx
new file mode 100644
index 00000000000..49e1233b944
--- /dev/null
+++ b/Master/texmf-dist/source/generic/pst-fill/pst-fill.dtx
@@ -0,0 +1,1822 @@
+% \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.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,
+%% addfillstyle=boxfill,fillsep=0.5](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}%
+% ^^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 lines
+% \psline(1,0.5)(1,4.5)\psline(4,0.5)(4,4.5)%
+% ^^A % Two crosses
+% \rput(1.5,4){\Cross}\rput(2,2){\Cross}%
+% \end{pspicture}}%
+% ^^A % The four neighbors
+% \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, 1997.
+%
+% \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{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.00}
+\def\filedate{2005/09/12}
+\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/Master/texmf-dist/source/generic/pst-fill/pst-fill.ins b/Master/texmf-dist/source/generic/pst-fill/pst-fill.ins
new file mode 100644
index 00000000000..67c9404c2f2
--- /dev/null
+++ b/Master/texmf-dist/source/generic/pst-fill/pst-fill.ins
@@ -0,0 +1,37 @@
+%% `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'