summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/doc/generic/pstricks/pst-fill-doc.tex
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/doc/generic/pstricks/pst-fill-doc.tex')
-rw-r--r--Master/texmf-dist/doc/generic/pstricks/pst-fill-doc.tex1362
1 files changed, 0 insertions, 1362 deletions
diff --git a/Master/texmf-dist/doc/generic/pstricks/pst-fill-doc.tex b/Master/texmf-dist/doc/generic/pstricks/pst-fill-doc.tex
deleted file mode 100644
index dbface7370c..00000000000
--- a/Master/texmf-dist/doc/generic/pstricks/pst-fill-doc.tex
+++ /dev/null
@@ -1,1362 +0,0 @@
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -*- Mode: Latex -*- %%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%% doc-fill.tex --- Documentation for `pst-fill PSTricks package
-%%
-%% Author : Denis GIROU (CNRS/IDRIS - France) <Denis.Girou@idris.fr>
-%% Created the : Wed Oct 29 18:39:29 1997
-%% Last mod. by : Herbert Voss <voss _at_ pstricks.de>
-%% Last mod. the : Aug 17 2004
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
-% If there is not `ctandir' installed (from `ltugboat' package)
-\begin{filecontents}{ctandir.sty}
-%% LaTeX2e file `ctandir.sty'
-%% generated by the `filecontents' environment
-%% from source `ltubguid' on 1997/06/12.
-%%
-%
-% Experimental CTAN location information macros for use with Donald
-% Arseneau's |url.sty|
-%
-% we need url.sty; we can rely on it to demand anything it needs of
-% LaTeX
-\IfFileExists{url.sty}%
- {\RequirePackage{url}}%
- {\PackageWarning{ctandir}{You should acquire a copy of url.sty}%
- \newcommand\urldef[3]{\def#1{\texttt{#3}}}%
- \let\url\texttt
- }
-%
-\newcommand\CTANdirectory[1]{\expandafter\urldef
- \csname CTAN@#1\endcsname\path}
-\newcommand\CTANfile[1]{\expandafter\urldef
- \csname CTAN@#1\endcsname\path}
-%
-% Use the standard label-referencing mechanism to get the warning for
-% an undefined label
-\newcommand\CTANref[1]{\expandafter\@setref\csname CTAN@#1\endcsname
- \relax{#1}}
-\end{filecontents}
-
-\documentclass{article}
-\usepackage[T1]{fontenc}
-\usepackage{geometry}
-\usepackage[hang]{caption} % Improved captions
-\usepackage{ctandir} % For CTAN references
-\usepackage{fancyvrb} % Fancy verbatims
-\usepackage{graphicx} % `graphicx' LaTeX standard package
-\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{pstricks} % PSTricks with the `color' extension
-\usepackage{pst-char} % PSTricks package for character path
-\usepackage[tiling]{pst-fill} % PSTricks package for filling/tiling
-\usepackage{pst-grad} % PSTricks package for gradient filling
-\usepackage{pst-node} % PSTricks package for nodes
-
-% To extend the height used for the text
-%\setlength{\textheight}{25cm}
-%\setlength{\topmargin}{-1.5cm}
-
-% Aligned labels in a description environment
-\newenvironment{Description}[1]{%
-\begin{list}{nothing}{\setlength{\leftmargin}{#1}
-\setlength{\labelwidth}{\leftmargin}\setlength{\labelsep}{1mm}}}
-{\end{list}}
-
-% For macro names
-\DeclareRobustCommand\cs[1]{\texttt{\char`\\#1}}
-
-% Define CTAN addresses using the commands of the |ctandir| package
-\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}
-
-% From ltugboat.cls
-% For references
-\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}
-% 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.\@}
-\makeatother
-
-% Personal macros (D.G.)
-% ----------------------
-
-% 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}
-
-% 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}}
-
-% Bibliography style
-\bibliographystyle{ltugbib}
-
-% Name macros
-\newcommand{\FillPackage}{\textsf{`pst-fill'}}
-\newcommand{\XYpic}{%
-\leavevmode\hbox{\kern-.1em X\kern-.3em\lower.4ex\hbox{Y\kern-.15em}-pic}}
-
-\makeatletter
-
-% Example environments
-% (do not use in them the four JXYZ characters, that we will use
-% as escape characters!)
-
-% For highlighting some verbatim sequences (array names, macro names and comments)
-\def\HLComment#1{\textit{#1}}
-\def\HLEmph#1{\textit{#1}}
-\def\HLTeletype#1{\texttt{#1}}
-\def\HLReverse#1{{%
-\setlength{\fboxsep}{1pt}%
-\colorbox{black}{\textcolor{white}{\textbf{#1}}}}}
-
-\def\Example{\FV@Environment{}{Example}}
-\def\endExample{%
-\end{VerbatimOut}
-\Below@Example{\input{\jobname.tmp}}
-\endgroup}
-
-\def\CenterExample{\FV@Environment{}{Example}}
-\def\endCenterExample{%
-\end{VerbatimOut}%
-\begin{center}
-\Below@Example{\input{\jobname.tmp}}
-\end{center}
-\endgroup}
-
-\def\SideBySideExample{\FV@Environment{}{Example}}
-\def\endSideBySideExample{%
-\end{VerbatimOut}%
-\SideBySide@Example{\input{\jobname.tmp}}
-\endgroup}
-
-\def\FVB@Example{%
-\begingroup
-\FV@UseKeyValues
-\parindent=0pt
-\multiply\topsep by 2
-\VerbatimEnvironment
-\begin{VerbatimOut}[codes={\catcode`\Z=12}]{\jobname.tmp}}
-
-\def\Below@Example#1{%
-\VerbatimInput[gobble=0,commentchar=Z,commandchars=JXY,numbersep=3pt,
- frame=single,numbers=left]%
- {\jobname.tmp}
-\catcode`\Z=9\relax%
-% We suppress the effect of the highlighting macros
-\catcode`\J=0\relax%
-\catcode`\X=1\relax%
-\catcode`\Y=2\relax%
-\def\HLComment##1{##1}%
-\def\HLEmph##1{##1}%
-\def\HLTeletype##1{##1}%
-\def\HLReverse##1{##1}%
-#1\par}
-
-\def\SideBySide@Example#1{%
-\@tempdimb=\FV@XRightMargin
-\advance\@tempdimb -5mm
-\begin{minipage}[c]{\@tempdimb}
- \fvset{xrightmargin=0pt}
- \catcode`\Z=9\relax%
- % We suppress the effect of the highlighting macros
- \catcode`\J=0\relax%
- \catcode`\X=1\relax%
- \catcode`\Y=2\relax%
- \def\HLComment##1{##1}%
- \def\HLEmph##1{##1}%
- \def\HLTeletype##1{##1}%
- \def\HLReverse##1{##1}%
- #1
-\end{minipage}%
-\@tempdimb=\textwidth
-\advance\@tempdimb -\FV@XRightMargin
-\advance\@tempdimb 5mm
-\begin{minipage}[c]{\@tempdimb}
- \VerbatimInput[gobble=0,commentchar=Z,commandchars=JXY,
- numbersep=3pt,frame=single,numbers=left,
- xleftmargin=5mm,xrightmargin=0pt]{\jobname.tmp}
-\end{minipage}}
-
-\makeatother
-
-% Example environments are numbered, framed and indented by 2 spaces
-\fvset{gobble=2,frame=single,fontfamily=tt,numbers=left,numbersep=3pt}
-
-% Default PSTricks parameters
-\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]{%
-% 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)
-% Eye
-\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.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}}}
-
-\begin{document}
-
-\title{\FillPackage\\A PSTricks package for filling and tiling areas}
-\author{Timothy van \textsc{Zandt}\thanks{INSEAD,
-Economics and Political Science, Fontainebleau, France ---
-\mbox{\texttt{<tvz@econ.insead.fr>}}.}\hspace{2mm}{\small (documentation by
-Denis \textsc{Girou}\thanks{CNRS/IDRIS --- Centre National de la Recherche
-Scientifique / Institut du D\'eveloppement et des Ressources en Informatique
-Scientifique, Orsay , France --- \mbox{\texttt{<Denis.Girou@idris.fr>}}.}%
-\hspace{1.5mm})}}
-
-\date{\shortstack{December 12, 1997 --- Version 97 patch 2\\
- {\small Documentation revised June 30, 2000}}}
-\maketitle
-
-\begin{center}
-\psframebox[framearc=0.3,framesep=5mm,linewidth=0.7mm]{%
- \parbox{11cm}{%
- {\Large\textbf{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.
-
- \hspace{5mm} 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{center}
-
-\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.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{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.}
-
-{\fvset{commandchars=JXY}
- To do a tiling, we have just to define the pattern with the
-\Verb+JHLReverseX\psboxfillY+ macro and to use the new \texttt{fillstyle}
-\Verb+JHLReverseXboxfillY+.
-
- 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}[JHLEmphX2Y][]{%
- \edef\Temp{JHLEmphX#1Y}%
- \begin{pspicture}JHLEmphX#2Y
- \ifx\Temp\empty
- \psframe[fillstyle=JHLEmphXboxfillY]JHLEmphX#2Y
- \else
- \psframe[fillstyle=JHLEmphXboxfillY,JHLEmphX#1Y]JHLEmphX#2Y
- \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 [\HLTeletype{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.
-
-\begin{CenterExample}
- \newcommand{\Square}{%
- \begin{pspicture}(1,1)
- \psframe[dimen=middle](1,1)
- \end{pspicture}}
-
- \psset{unit=0.5}
- \psboxfill{\Square}
- \Tiling[JHLEmphXfillangleY=JHLReverseX45Y]{(3,3)}\hspace{3cm}
- \Tiling[JHLEmphXfillangleY=JHLReverseX-60Y]{(3,3)}
-\end{CenterExample}
-
-\newcommand{\Square}{%
-\begin{pspicture}(1,1)\psframe[dimen=middle](1,1)\end{pspicture}}
-
-\begin{Description}{2cm}
- \setcounter{footnote}{1}
- \item [\HLTeletype{fillsepx} (real$|$dim)\hfill :] 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 [\HLTeletype{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 [\HLTeletype{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.
-
-\fvset{xrightmargin=0cm}
-\begin{CenterExample}
- \psset{unit=0.5}
- \psboxfill{\Square}
- \Tiling[JHLEmphXfillsepxY=JHLReverseX2mmY]{(3,3)}\hfill
- \Tiling[JHLEmphXfillsepyY=JHLReverseX1mmY]{(3,3)}\hfill
- \Tiling[JHLEmphXfillsepY=JHLReverseX0.5Y]{(3,3)}\hfill
- \Tiling[JHLEmphXfillsepY=JHLReverseX-0.5Y]{(3,3)}
-\end{CenterExample}
-
-\begin{Description}{2cm}
- \item [\HLTeletype{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 [\HLTeletype{fillcycley}\footnotemark\ (integer)\hfill :] Same thing for
- columns (\emph{Default:~0}).
- \setcounter{footnote}{1}
- \item [\HLTeletype{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{CenterExample}
- \psset{unit=0.5}
- \psboxfill{\Square}
- \newcommand{\TilingA}[1]{\Tiling[JHLEmphXfillcyclexY=JHLReverseX#1Y]{(3,3)}}
-
- \TilingA{JHLReverseX0Y}\hfill\TilingA{JHLReverseX1Y}\hfill\TilingA{JHLReverseX2Y}\hfill\TilingA{JHLReverseX3Y}
-
- \vspace{3mm}
- \TilingA{JHLReverseX4Y}\hfill\TilingA{JHLReverseX5Y}\hfill\TilingA{JHLReverseX6Y}\hfill\TilingA{JHLReverseX-3Y}
-
- \vspace{3mm}
- \Tiling[JHLEmphXfillcycleyY=JHLReverseX2Y]{(3,3)}\hfill
- \Tiling[JHLEmphXfillcycleyY=JHLReverseX3Y]{(3,3)}\hfill
- \Tiling[JHLEmphXfillcycleyY=JHLReverseX-3Y]{(3,3)}\hfill
- \Tiling[JHLEmphXfillcycleY=JHLReverseX2Y]{(3,3)}\hfill
-\end{CenterExample}
-
-\begin{Description}{2cm}
- \setcounter{footnote}{1}
- \item [\HLTeletype{fillmovex}\footnotemark\ (real$|$dim)\hfill :] value of the
- horizontal moves between consecutive patterns (\emph{Default:~0}).
- \setcounter{footnote}{1}
- \item [\HLTeletype{fillmovey}\footnotemark\ (real$|$dim)\hfill :] value of the
- vertical moves between consecutive patterns (\emph{Default:~0}).
- \setcounter{footnote}{1}
- \item [\HLTeletype{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{CenterExample}
- \psset{unit=0.5}
- \psboxfill{\Square}
- \Tiling[JHLEmphXfillmovexY=JHLReverseX0.5Y]{(3,3)}\hfill
- \Tiling[JHLEmphXfillmoveyY=JHLReverseX0.5Y]{(3,3)}\hfill
- \Tiling[JHLEmphXfillmoveY=JHLReverseX0.5Y]{(3,3)}\hfill
- \Tiling[JHLEmphXfillmoveY=JHLReverseX-0.5Y]{(3,3)}
-\end{CenterExample}
-
-\begin{Description}{2cm}
- \item [\HLTeletype{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 [\HLTeletype{fillloopaddx}\footnotemark\ (integer)\hfill :] number of
- times the pattern is added on left and right positions (\emph{Default:~0}).
- \setcounter{footnote}{1}
- \item [\HLTeletype{fillloopaddy}\footnotemark\ (integer)\hfill :] number of
- times the pattern is added on top and bottom positions (\emph{Default:~0}).
- \setcounter{footnote}{1}
- \item [\HLTeletype{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 [\HLTeletype{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{CenterExample}
- \psset{unit=0.3,JHLEmphXPstDebugY=JHLReverseX1Y}
- \psboxfill{\Square}
- \psset{linewidth=1mm}
- \vspace{0.8cm}
- \Tiling{(2,2)}\hspace{3cm}
- \Tiling[fillcyclex=JHLEmphX2Y]{(2,2)}\hspace{4cm}
- \Tiling[fillmove=JHLEmphX0.5Y]{(2,2)}
-\end{CenterExample}
-
-\vspace{1cm}
-\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{CenterExample}
- \newcommand{\Triangle}{%
- \begin{pspicture}(1,1)
- \pstriangle[dimen=middle](0.5,0)(1,1)
- \end{pspicture}}
- \newcommand{\Hexagon}{%
- % JHLCommentXsin(60)=0.866Y
- \begin{pspicture}(0.866,0.75)
- \SpecialCoor
- % JHLCommentXHexagonY
- \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{JHLReverseX\TriangleY}
- \Tiling{(4,4)}\hfill
- % JHLCommentXThe two other regular tilingsY
- \Tiling[fillcyclex=JHLEmphX2Y]{(4,4)}\hfill
- \psboxfill{JHLReverseX\HexagonY}
- \Tiling[fillcyclex=JHLEmphX2Y,fillloopaddy=JHLEmphX1Y]{(5,5)}
-\end{CenterExample}
-
-\begin{CenterExample}
- \newcommand{\ArchimedianA}{%
- % JHLCommentXArchimedian tiling 3^2.4.3.4Y
- \psset{dimen=middle}
- % JHLCommentXsin(60)=0.866Y
- \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}{%
- % JHLCommentXArchimedian tiling 4.8^2Y
- \psset{dimen=middle,unit=1.5}
- % JHLCommentXsin(22.5)=0.3827 ; cos(22.5)=0.9239Y
- \begin{pspicture}(1.3066,0.6533)
- \SpecialCoor
- % JHLCommentXOctogonY
- \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{JHLReverseX\ArchimedianAY}
- \Tiling[fillmove=JHLEmphX0.5Y]{(7,7)}\hfill
- \psboxfill{JHLReverseX\ArchimedianBY}
- \Tiling[fillcyclex=JHLEmphX2Y,fillloopaddy=JHLEmphX1Y]{(7,7)}
-\end{CenterExample}
-
- \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{CenterExample}
- \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=JHLEmphXboxfillY,fillsep=JHLEmphX0.25Y]
- (0,1)(1,4)(4,6)(4,0)(2,1)
- \end{pspicture}
- \hspace{2cm}
- \begin{pspicture}(4,4)
- \pscircle[linestyle=none,fillstyle=solid,fillcolor=yellow,
- JHLReverseXaddfillstyleY=JHLEmphXboxfillY,fillsep=JHLEmphX0.5Y](2,2){2}
- \end{pspicture}
-\end{CenterExample}
-
- 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{CenterExample}
- \newcommand{\ProtoTile}{%
- \begin{pspicture}(1,1)
- % JHLCommentX1/12=0.08333Y
- \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){\rotateleft{\ProtoTile}}
- \end{pspicture}}
-
- \ProtoTile\hfill\BasicTile\hfill
- \psboxfill{\BasicTile}
- \Tiling[fillcyclex=JHLEmphX2Y]{(4,4)}
-\end{CenterExample}
-
- 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.
-
-\fvset{xrightmargin=0cm}
-\begin{CenterExample}
- \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{CenterExample}
-
- 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{CenterExample}
- \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} % JHLCommentXEyeY
- \psccurve*(3.5,0.3)(3.35,0.45)(3.5,0.6)(3.6,0.4)% JHLCommentXMuzzleY
- % JHLCommentXMouthY
- \pscurve(3,0.35)(3.3,0.1)(3.6,0.05)
- % JHLCommentXEarY
- \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=JHLEmphX2Y,fillloopadd=JHLEmphX1Y]{(10,5)}
-\end{CenterExample}
-\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{CenterExample}
- \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=JHLEmphX1Y]{(10,6)}
-\end{CenterExample}
-
- 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{CenterExample}
- \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{JHLReverseX\WangTilesY}
- \Tiling{(12,12)}
-\end{CenterExample}
-
-\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{CenterExample}
- \psboxfill{% JHLCommentXStrangely require x1=x2...Y
- \begin{pspicture}(0,1)(0,4.1)
- \includegraphics[bb=17 176 560 74,width=3cm]{images/JHLReverseXtigerY}
- \end{pspicture}}
- \Tiling{(6,6.2)}
-\end{CenterExample}
-
- 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{CenterExample}
- \psboxfill{\includegraphics{images/JHLReverseXflowersY}}
- \begin{pspicture}(8,4)
- \psellipse[fillstyle=JHLEmphXboxfillY,fillsize={(8,4)}](4,2)(4,2)
- \end{pspicture}
-\end{CenterExample}
-
-\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{CenterExample}
- \DeclareFixedFont{\bigsf}{T1}{phv}{b}{n}{4.5cm}
- \DeclareFixedFont{\smallrm}{T1}{ptm}{m}{n}{3mm}
- \psboxfill{\smallrm JHLReverseXSince 182 days...Y}
- \begin{pspicture*}(8,4)
- \centerline{%
- \pscharpath[fillstyle=gradient,gradangle=-45,
- gradmidpoint=0.5,addfillstyle=JHLEmphXboxfillY,
- fillangle=JHLEmphX45Y,fillsep=JHLEmphX0.7mmY]
- {\rput[b](0,0.1){\bigsf JHLReverseX2000Y}}}
- \end{pspicture*}
-\end{CenterExample}
-
-\begin{CenterExample}
- \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}}}}
- % JHLCommentXA kangaroo of kangaroos...Y
- \begin{pspicture}(8,2)
- \pscharpath[linestyle=none,fillstyle=JHLEmphXboxfillY,fillloopadd=JHLEmphX1Y]
- {\rput[b](4,0){\mediumrm JHLReverseXKangarooY}}
- \end{pspicture}
-\end{CenterExample}
-
-\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{CenterExample}
- \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{CenterExample}
-
- 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}
-% 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)
- % Title
- \rput(3,2200){\shortstack{Fantaisist repartition of kangaroos\\
- in the world (in thousands)}}
- % Frame background
- \psframe[fillstyle=solid,fillcolor=LemonChiffon](0,0)(6,2000)
- % Graduations
- \multido{\n=0+500}{5}{\rput[r](-0.12,\n){\psscalebox{0.8}{\n}}}
- % 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)}
- % 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)}
- % Lines from major ticks marks
- \multips(0,500)(0,500){3}{\psline[linestyle=dotted,linewidth=0.6pt](6,0)}
- % 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)
- % 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,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...
-
-% Truchet (Lewthwaite-Pickover-Truchet) tiling
-% --------------------------------------------
-
-\begin{CenterExample}
- % JHLCommentXLPT prototileY
- \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}}
-
- % JHLCommentXLPT tileY
- \newcount\Boolean
- \newcommand{\BasicTileLPT}{%
- % JHLCommentXFrom random.tex by Donald ArseneauY
- \setrannum{\Boolean}{0}{1}%
- \ifnum\Boolean=0
- \ProtoTileLPT%
- \else
- \rotateleft{\ProtoTileLPT}%
- \fi}
-
- \ProtoTileLPT\hfill\rotateleft{\ProtoTileLPT}\hfill
- \psset{unit=0.5}
- \psboxfill{JHLReverseX\BasicTileLPTY}
- \Tiling{(5,5)}
-\end{CenterExample}
-
- 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{CenterExample}
- % JHLCommentXLPT prototileY
- \newcommand{\ProtoTileLPT}{%
- \psset{dimen=middle}
- \psframe(1,1)
- \psarc(0,0){0.5}{0}{90}
- \psarc(1,1){0.5}{-180}{-90}}
-
- % JHLCommentXCounter to change the random seedY
- \newcount\InitCounter
-
- % JHLCommentXLPT tileY
- \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}}
- \rotateleft{\ProtoTileLPT}%
- \pscustom{\code{\psrbrace ifelse}}}
-
- \psset{unit=0.4,linewidth=0.4pt}
- \psboxfill{JHLReverseX\BasicTileLPTY}
- \Tiling{(15,15)}
-\end{CenterExample}
-
- 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{CenterExample}
- % JHLCommentXLPT prototileY
- \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}}
-
- % JHLCommentXCounter to change the random seedY
- \newcount\InitCounter
-
- % JHLCommentXLPT tileY
- \newcommand{\BasicTileLPT}[2]{%
- \InitCounter=\the\time
- \pscustom{\code{%
- rand \the\InitCounter\space sub 2 mod 0 eq \pslbrace
- JHLReverseXrowY JHLReverseXcolumnY 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 JHLReverseXrowY JHLReverseXcolumnY add 2 mod
- 0 eq \pslbrace}}
- \rotateleft{\ProtoTileLPT{#2}{#1}}%
- \pscustom{\code{\psrbrace \pslbrace}}
- \rotateleft{\ProtoTileLPT{#1}{#2}}%
- \pscustom{\code{\psrbrace ifelse \psrbrace ifelse}}}
-
- \psboxfill{JHLReverseX\BasicTileLPT{red}{yellow}Y}
- \Tiling{(4,4)}\hfill
- \psset{unit=0.4}
- \psboxfill{JHLReverseX\BasicTileLPT{blue}{cyan}Y}
- \Tiling{(15,15)}
-\end{CenterExample}
-
- 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{CenterExample}
- % JHLCommentX\Escape will be the \ characterY
- {\catcode`\!=0\catcode`\\=11!gdef!Escape{\}}
-
- \newcommand{\ProtoTile}{%
- JHLReverseX\SquareY%
- \pscustom{%
- \moveto(-0.9,0.75) % In PSTricks units
- \code{%
- /Times-Italic findfont 8 scalefont setfont
- (\Escape() show JHLReverseXrowY 3 string cvs show (,) show
- JHLReverseXcolumnY 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
- JHLReverseXrowY 1 sub x2 mul JHLReverseXcolumnY add 3 string cvs center show}}}
-
- \psboxfill{JHLReverseX\ProtoTileY}
- \Tiling{(6,4)}
-\end{CenterExample}
-
-\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).
-
-\begin{CenterExample}
- \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}%
- % JHLCommentXReceive and send arrowsY
- \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=JHLEmphX2Y}
- \begin{pspicture}(-5.7,-5.7)(5.7,5.7)
- % JHLCommentXCentral domainY
- \rput(0,0){%
- \begin{pspicture}(5,5)
- % JHLCommentXReceive from West, East, North and SouthY
- \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}
- % JHLCommentXSend area for West, East, North and SouthY
- \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)}
- % JHLCommentXCentral domainY
- \SubDomain{(5,5)}{(0.5,0.5)(4.5,4.5)}{solid}{\Central}
- % JHLCommentXRedraw overlapped linesY
- \psline(1,0.5)(1,4.5)
- \psline(4,0.5)(4,4.5)
- % JHLCommentXTwo crossesY
- \rput(1.5,4){\Cross}
- \rput(2,2){\Cross}
- \end{pspicture}}
- % JHLCommentXThe 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{CenterExample}
-
-% 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}
-
-\end{document}