summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2008-02-21 18:08:25 +0000
committerKarl Berry <karl@freefriends.org>2008-02-21 18:08:25 +0000
commitbf6e239c11b0086a5d3f19a4f218b606bf870cd0 (patch)
tree6580e3d61ee7f98f2ad89639543bbf16e1266ca7
parente1b949bfc9c1682e28d1fe68913be7f410f17de2 (diff)
new pstricks package pst-pad, first attempt (19feb08)
git-svn-id: svn://tug.org/texlive/trunk@6702 c570f23f-e606-0410-a88d-b1316a301751
-rw-r--r--Master/texmf-dist/doc/generic/pst-pad/README69
-rw-r--r--Master/texmf-dist/doc/generic/pst-pad/pst-pad-doc.pdfbin0 -> 99992 bytes
-rw-r--r--Master/texmf-dist/doc/generic/pst-pad/pst-pad-doc.tex474
-rw-r--r--Master/texmf-dist/source/generic/pst-pad/Makefile38
-rw-r--r--Master/texmf-dist/tex/generic/pst-pad/pst-pad.tex463
-rw-r--r--Master/texmf-dist/tex/latex/pst-pad/pst-pad.sty7
-rw-r--r--Master/texmf-dist/tex/latex/pst-pad/showexpl.cfg44
-rwxr-xr-xMaster/tlpkg/bin/ctan2tds1
-rwxr-xr-xMaster/tlpkg/bin/tlpkg-ctan-check3
-rw-r--r--Master/tlpkg/tlpsrc/collection-pstricks.tlpsrc1
-rw-r--r--Master/tlpkg/tlpsrc/pst-pad.tlpsrc2
11 files changed, 1101 insertions, 1 deletions
diff --git a/Master/texmf-dist/doc/generic/pst-pad/README b/Master/texmf-dist/doc/generic/pst-pad/README
new file mode 100644
index 00000000000..ec0a1a391e6
--- /dev/null
+++ b/Master/texmf-dist/doc/generic/pst-pad/README
@@ -0,0 +1,69 @@
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+Description:
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+pst-pad is a PSTricks package for drawing simple attachment systems.
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+Contents:
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+Makefile - Makefile for PDF documentation
+pst-pad.sty - The LaTeX file
+pst-pad.tex - The TeX file
+pst-pad-doc.pdf - The documentation
+pst-pad-doc.tex - The documentation (source)
+showexpl.cfg - Configuration file for showexpl.sty
+
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+Installation:
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+Save the files pst-pad.sty|tex in a directory, which is part of your
+local TeX tree. Then do not forget to run texhash to update this
+tree. pst-pad needs pst-node and pstricks, which should be part of
+your local TeX installation, otherwise get it from a CTAN server,
+f.ex. ftp://ftp.dante.de
+
+Save the files
+
+pst-pad.sty
+pst-pad.tex
+
+in any place, where latex or any other TeX program will find it. Do
+not forget to update your database, when installing this package the
+first time.
+
+pst-pad uses the extended version of the keyval package. So be sure
+that you
+- have installed xkeyval with the special pst-xkey
+ (CTAN: tex-archive/macros/latex/contrib/xkeyval/)
+- do not load another package after pst-pad, which loads the old
+ keyval.sty or pst-key.tex
+
+
+If you like to get the documentation file in another format run
+
+latex pst-pad-doc.tex
+latex pst-pad-doc.tex
+dvips pst-pad-doc.dvi
+
+to get a PostScript file. But pay attention, that the pst-pad files
+are saved in the above mentioned way, before you run latex on the
+documentation file.
+
+The intermediate DVI file works only with viewers which can interprete
+the embedded PostScript code.
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+Licence:
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+This material is subject to the LaTeX Project Public License. See
+http://www.ctan.org/tex-archive/help/Catalogue/licenses.lppl.html for
+the details of that license.
+
+
+Author: Patrick Drechsler
+Created: Tue Feb 19 18:14:18 2008
+
diff --git a/Master/texmf-dist/doc/generic/pst-pad/pst-pad-doc.pdf b/Master/texmf-dist/doc/generic/pst-pad/pst-pad-doc.pdf
new file mode 100644
index 00000000000..6c5d47b28d0
--- /dev/null
+++ b/Master/texmf-dist/doc/generic/pst-pad/pst-pad-doc.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/generic/pst-pad/pst-pad-doc.tex b/Master/texmf-dist/doc/generic/pst-pad/pst-pad-doc.tex
new file mode 100644
index 00000000000..558167587b1
--- /dev/null
+++ b/Master/texmf-dist/doc/generic/pst-pad/pst-pad-doc.tex
@@ -0,0 +1,474 @@
+%% Filename: pst-pad-doc.tex
+%%
+%% Author: Patrick Drechsler
+%%
+%% Copyright
+%%
+%% Created: Fri Feb 8 02:04:17 2008
+%%
+%% Version: $Id: pst-pad-doc.tex 315 2008-02-19 16:42:56Z patrick $
+%%
+\listfiles
+\documentclass{scrartcl}
+\setkomafont{disposition}{\normalcolor\rmfamily\bfseries}
+\usepackage[T1]{fontenc}
+\usepackage[utf8]{inputenc}
+
+\usepackage{fixltx2e}% standard LaTeX package...
+\usepackage{lmodern}
+\usepackage[scaled=0.85]{beramono}
+\usepackage{fancyhdr}
+\usepackage[obeyspaces]{url}
+\usepackage{xcolor}%
+\usepackage{amsmath}
+\usepackage{pst-pad}
+\let\verPstPad\fileversion
+\usepackage{multicol}
+\usepackage{showexpl}
+%
+\makeatletter
+\def\@UrlFont{\small\ttfamily}
+\renewenvironment{description}
+ {\list{}{\labelwidth\z@ \itemindent-\leftmargin
+ \itemsep0pt \parsep0pt
+ \let\makelabel\descriptionlabel}}
+ {\endlist}
+
+\DeclareRobustCommand\cs[1]{\texttt{\char`\\#1}}
+\def\PS{PostScript}
+\newcommand{\PadPackage}{\textsf{`pst-pad'}}
+
+\lhead{\PadPackage}\rhead{A PSTricks package for drawing attachment models}
+\pagestyle{fancy}
+
+\psset{subgriddiv=0,griddots=10,gridlabels=7pt}%
+%\showgrid
+% \usepackage[colorlinks,linktocpage]{hyperref}
+\usepackage{hyperref}
+
+\newcommand{\macro}[1]{\texttt{#1}}
+\newcommand{\parameter}[1]{\texttt{#1}}
+
+\definecolor{mygreen}{rgb}{0,.5,0}
+\definecolor{mybrown}{rgb}{.6,0,0}
+
+\newcommand{\ParCol}[3]{\textbf{\shortstack{#1 \color{mygreen}(#2)\\ \color{mybrown}(#3)}}}
+
+\begin{document}
+
+\title{\texttt{pst-pad}\\ A PSTricks package for drawing attachment
+ mechanisms\\\normalsize ver. \verPstPad} \author{Patrick
+ Drechsler\thanks{\url{<patrick at pdrechsler dot de>}}} \date{\today}
+\maketitle
+
+\begin{abstract}
+\PadPackage{} is a PSTricks package to draw simple attachment systems.
+\end{abstract}
+
+\setlength{\columnseprule}{0.6pt}
+\begin{multicols}{2}
+{\parskip 0pt \tableofcontents}
+\end{multicols}
+
+\section{Introduction}
+\label{sec:introduction}
+
+The package \PadPackage{} is a collection of graphical elements based on
+PStricks that can be used to facilitate display of attachment systems such as
+two differently shaped surfaces with or without a fluid wedged in
+between. These macros ease the display of wet adhesion models and common
+friction systems such as boundary lubrication, elastohydrodynamic lubrication
+and hydrodynamic lubrication. The name \PadPackage{} was chosen because I used
+this package to display models of different animal attachment pads in my
+research.
+
+\section{Parameters}
+\label{sec:parameters}
+
+There are specific paramaters defined to easily change the behaviour of the pst-pad
+objects you are drawing.
+
+\let\HLTTc\textsf
+%\begin{multicols}{2}
+\begin{description}
+\item[\HLTTc{fluid} (boolean):] (\emph{default:~true})
+\item[\HLTTc{WallThickness} (dimension):] (\emph{default:~1})
+\item[\HLTTc{WallString} (string):] (\emph{default:~})
+\item[\HLTTc{WallAngle} (PSTricks color):] (\emph{default:~0})
+\item[\HLTTc{WallLineWidth} (dimension):] (\emph{default:~1pt})
+\item[\HLTTc{WallLineColor} (PSTricks color):] (\emph{default:~black})
+\item[\HLTTc{SphereStartAngle} (dimension):] (\emph{default:~180})
+\item[\HLTTc{SphereEndAngle} (boolean):] (\emph{default:~360})
+\item[\HLTTc{SphereRadius} (dimension):] (\emph{default:~1})
+\item[\HLTTc{ShpereString} (string):] (\emph{default:~})
+\item[\HLTTc{SphereOffset} (dimension):] (\emph{default:~0})
+\item[\HLTTc{SphereFillColor} (PSTricks color):] (\emph{default:~white})
+\item[\HLTTc{SphereLineWidth} (dimension):] (\emph{default:~1pt})
+\item[\HLTTc{SphereLineColor} (PSTricks color):] (\emph{default:~black})
+\item[\HLTTc{FSphereHeight} (dimension):] (\emph{default:~2})
+\item[\HLTTc{FSphereFillColor} (PSTricks color):] (\emph{default:~lightgray})
+\item[\HLTTc{FSphereString} (string):] (\emph{default:~})
+\item[\HLTTc{FSphereLineWidth} (dimension):] (\emph{default:~1pt})
+\item[\HLTTc{FSphereLineColor} (PSTricks color):] (\emph{default:~black})
+\item[\HLTTc{FluidMaxRadius} (dimension):] (\emph{default:~1})
+\item[\HLTTc{FluidMinRadius} (dimension):] (\emph{default:~.5})
+\item[\HLTTc{FluidHeight} (dimension):] (\emph{default:~.5})
+\item[\HLTTc{FluidFillColor} (PSTricks color):] (\emph{default:~yellow})
+\item[\HLTTc{FluidString} (string):] (\emph{default:~})
+\item[\HLTTc{FluidShearOffsetX} (dimension):] (\emph{default:~0})
+\item[\HLTTc{FluidShearOffsetY} (dimension):] (\emph{default:~0})
+\item[\HLTTc{FluidLineWidth} (dimension):] (\emph{default:~1pt})
+\item[\HLTTc{FluidLineColor} (PSTricks color):] (\emph{default:~black})
+\item[\HLTTc{StringA} (string):] (\emph{default:~})
+\item[\HLTTc{StringB} (string):] (\emph{default:~})
+\item[\HLTTc{TotalAngle} (angle):] (\emph{default:~0})
+\end{description}
+
+\clearpage
+
+\section{High-level Macros (``Objects'')}
+\label{sec:high-level-macros}
+
+There are three high-level macros: \macro{PstWallToWall},
+\macro{PstSphereToWall} and \macro{PstPad}.
+
+\subsection{\macro{PstWallToWall}}
+\label{sec:macropstwalltowall}
+
+\begin{LTXexample}[width=5cm]
+\begin{pspicture}(4,4)\psgrid
+ \PstWallToWall(2,2)
+\end{pspicture}
+\end{LTXexample}
+
+\subsection{\macro{PstSphereToWall}}
+\label{sec:macropstspheretowall}
+
+\begin{LTXexample}[width=5cm]
+\begin{pspicture}(4,4)\psgrid
+ \PstSphereToWall[fluid=false](2,2)
+\end{pspicture}
+\end{LTXexample}
+
+
+\subsection{\macro{PstPad}}
+\label{sec:macropstpad}
+
+\begin{LTXexample}[width=5cm]
+\begin{pspicture}(4,4)\psgrid
+ \PstPad(2,2)
+\end{pspicture}
+\end{LTXexample}
+
+\clearpage
+
+\subsection{Basic Usage}
+\label{sec:basic-usage}
+
+The following figure shows the usage of some basic parameters with the
+\macro{PstPad} macro. Green and brown colored values in parentheses give
+default and example values, respectively.
+
+\begin{pspicture}(-5,-4)(7.5,4)%\psgrid
+ \PstPad[%
+ FluidMaxRadius=4,%
+ FluidMinRadius=3,%
+ FluidHeight=1,%
+ FSphereHeight=2,%
+ FSphereFillColor=green!20!white,%
+ FluidFillColor=blue!10!white,%
+ FluidLineWidth=1.5pt,%
+ FSphereLineWidth=0.1pt,%
+ WallLineWidth=3pt,%
+ WallLineColor=blue,%
+ FSphereLineColor=magenta,%
+ FluidLineColor=green!50!black%
+ ](0,0)
+ %%
+ \sffamily\footnotesize%
+ \psset{linecolor=gray, linewidth=0.2pt}
+ %% "Crosshair" for orientation:
+ \psline[linestyle=dashed](-5,0)(5,0)
+ \psline[linestyle=dashed](0,-3)(0,1.5)
+ %% Node definitions:
+ \pnode(0,0){center}
+ \pnode(-4,-2.25){maxradiusLeft}
+ \pnode(0,-2.25){maxradiusRight}
+ \pnode(-3,0){minradiusLeft}
+ \pnode(3,0){minradiusRight}
+ \pnode([nodesep=4.5]center){fluidheightCenter}
+ \pnode([nodesep=4.5,offset=-1]center){fluidheightBottom}
+ \pnode([offset=-1]fluidheightBottom){wallThicknessBottom}
+ \pnode([nodesep=5.2,offset=1]center){fsphereheightBottom}
+ \pnode([offset=1]fsphereheightBottom){fsphereheightTop}
+ %%
+ \psset{arrows=|<->|,linewidth=0.8pt,linecolor=red,arrowscale=1.5}
+ %% Center:
+ \rput[l]([nodesep=.2,offset=.2]center){\textbf{(0,0)}}
+ %% Label FluidMinRadius:
+ \ncline{minradiusLeft}{center}
+ \nbput{\ParCol{FluidMinRadius}{0.5}{3}}
+ %% Label FluidMaxRadius:
+ \ncline{maxradiusLeft}{maxradiusRight}
+ \nbput{\ParCol{FluidMaxRadius}{1}{4}}
+ %% Label FluidHeight:
+ \ncline{fluidheightCenter}{fluidheightBottom}
+ \naput{\ParCol{FluidHeight}{.5}{1}}
+ %% Label WallThickness:
+ \ncline{fluidheightBottom}{wallThicknessBottom}
+ \naput{\ParCol{WallThickness}{1}{1}}
+ %% Label FSpereHeight:
+ \ncline{fsphereheightBottom}{fsphereheightTop}
+ \nbput{\ParCol{FSphereHeight/2}{2}{2}}
+ %% Label FSphereFillColor:
+ \psline{->}(-.1,2.2)(-.3,1.6)
+ \rput(-.1,2.6){\ParCol{FSphereFillColor}{``lightgray''}{``green!20!white''}}
+ %% Label FluidFillColor:
+ \psline{->}(4,2.2)(2.5,.6)
+ \rput(4,2.6){\ParCol{FluidFillColor}{``yellow''}{``blue!10!white''}}
+ %% Label FluidLineWidth:
+ \psline{->}([offset=.5,nodesep=3]minradiusRight)(minradiusRight)
+ \rput[l]([offset=-.1,nodesep=3.2]minradiusRight){\ParCol{FluidLineWidth}{1pt}{1.5pt}}
+ \rput[l]([offset=.8,nodesep=3.2]minradiusRight){\ParCol{FluidLineColor}{``black''}{``green!50!black''}}
+ %% Label FSphereLineWidth:
+ \psline{->}(-4.3,2.2)(-3.5,1)
+ \rput(-4.3,2.6){\ParCol{FSphereLineWidth}{1pt}{0.1pt}}
+ \rput(-4.3,3.4){\ParCol{FSphereLineColor}{``black''}{``magenta''}}
+ %% Label WallLineWidth:
+ \psline{->}(1.5,-2.25)(1.5,-1)
+ \rput[t](1.5,-2.5){\ParCol{WallLineWidth}{1pt}{3pt}}
+ \rput[t](1.5,-3.4){\ParCol{WallLineColor}{``black''}{``blue''}}
+\end{pspicture}
+
+\subsection{Liquid shearing}
+\label{sec:liquid-shearing}
+
+Sheared liquids sandwiched in between two surfaces can also be displayed. The
+following figure shows the usage of the
+parameters \parameter{FluidShearOffsetX}
+and \parameter{FluidShearOffsetY}. Again, green and brown colored values in
+parentheses give default and example values, respectively.
+
+\subsubsection[\parameter{FluidShearOffsetX}]{Parameter \parameter{FluidShearOffsetX}}
+\label{sec:param-offsetx}
+
+\parameter{FluidShearOffsetX}\ describes the x offset from the current value
+of \parameter{FluidMaxRadius}.
+
+\begin{center}
+ \begin{pspicture}[showgrid=false](-5,-2)(4.5,2)%
+ \PstPad[%
+ FluidHeight=1,%
+ FluidShearOffsetX=0.6%
+ ](0,0)
+ %% Labeling:
+ \sffamily\footnotesize%
+ \psset{linecolor=black, linewidth=0.2pt}
+ \psline[linestyle=dotted](-2.5,0)(1.5,0)
+ \psline[linestyle=dotted](0,-1)(0,1.5)
+
+ %% Node definitions:
+ \pnode(0,0){center}
+ \pnode(-1,-2.25){maxradiusLeft}
+ \pnode(0,-2.25){maxradiusRight}
+
+ \pnode(-1,0){maxradiusLeftZero}
+ \pnode(0,0){maxradiusRightZero}
+
+ \pnode([nodesep=-0.6]maxradiusLeft){Xoffset}
+ \pnode([nodesep=-0.6]maxradiusLeftZero){XoffsetZero}
+
+ \psline[linestyle=dotted]([offset=-1]maxradiusLeftZero)([offset=.5]maxradiusLeftZero)
+ \psline[linestyle=dotted]([offset=-1]XoffsetZero)([offset=.5]XoffsetZero)
+ %%
+ %%
+ \psset{arrowscale=2,arrows=|<->|}
+ %% Label FluidMaxRadiusLeft:
+ \ncline{maxradiusLeft}{maxradiusRight}
+ \nbput[npos=0.5]{\ParCol{FluidMaxRadius}{1}{1}}
+ %% Label FluidShearOffsetX:
+ \ncline[linecolor=red]{maxradiusLeftZero}{XoffsetZero}
+ \nbput[npos=1.6]{\ParCol{FluidShearOffsetX}{0}{.6}}
+ \end{pspicture}
+\end{center}
+
+\subsubsection[\parameter{FluidShearOffsetY}]{Parameter \parameter{FluidShearOffsetY}}
+\label{sec:param-offsety}
+
+\parameter{FluidShearOffsetY}\ describes the y offset from zero to determine the
+curvature of the meniscus.
+
+\begin{center}
+ \begin{pspicture}[showgrid=false](-4.5,-2)(4.5,2)%
+ \PstPad[%
+ FluidHeight=1,%
+ FluidShearOffsetY=0.4%
+ ](0,0)
+ %% Labeling:
+ \sffamily\footnotesize%
+ \psset{linecolor=black, linewidth=0.2pt}
+ \psline[linestyle=dotted](-2.5,0)(1.5,0)
+ \psline[linestyle=dotted](0,-1)(0,1.5)
+ %% Node definitions:
+ \pnode(0,0){center}
+ \pnode([nodesep=1.5]center){fluidheightCenterRight}
+ \pnode([nodesep=-1.5]center){fluidheightCenterLeft}
+ \pnode([nodesep=-1.5,offset=1]center){fluidheightTop}
+ \pnode([offset=-0.4]fluidheightCenterRight){Yoffset}
+ %%
+ \psline[linestyle=dotted](0,-.4)(1.7,-.4)
+ %%
+ \psset{arrowscale=2,arrows=|<->|}
+ %% Label FluidHeight:
+ \ncline{fluidheightCenterLeft}{fluidheightTop}
+ \naput{\ParCol{FluidHeight}{.5}{1}}
+ %% Label FluidShearOffsetY:
+ \ncline[linecolor=red]{fluidheightCenterRight}{Yoffset}
+ \naput{\ParCol{FluidShearOffsetY}{0}{.4}}
+ \end{pspicture}
+\end{center}
+
+
+\subsection{Tilting parameters}
+\label{sec:tilting-parameters}
+
+The following figure shows the usage of the \parameter{TotalAngle}
+parameter. The default angle is 0 degrees. Again, green and brown colored
+values in parentheses give default and example values, respectively.
+
+\begin{center}
+\begin{pspicture}(-2.5,-2)(4,2.5)%
+ %%
+ \PstPad[TotalAngle=30](0,0)
+ %% Labeling:
+ \sffamily\footnotesize%
+ \psset{linecolor=black, linewidth=0.2pt}
+ \psline[linestyle=dotted](-2.5,0)(2.5,0)
+ \psline[linestyle=dotted](0,-1)(0,1.5)
+ \rput{30}{%
+ \psline[linestyle=dashed](-2.5,0)(2.5,0)
+ \psline[linestyle=dashed](0,-1)(0,1.5)
+ }
+ \pnode(0,0){center}
+ \psset{linecolor=red}
+ \psarc[arrowscale=2]{<->}(center){2.25}{0}{30}
+ \rput[l]([nodesep=2.5,angle=15]center){%
+ \ParCol{TotalAngle}{0}{30}}%
+\end{pspicture}
+\end{center}
+
+\section{Example Usage}
+\label{sec:example-usage}
+
+\begin{LTXexample}[width=5cm]
+\begin{pspicture}(4,4)\psgrid
+ \PstWallToWall[%
+ FluidFillColor=red,%
+ TotalAngle=10%
+ ](2,2)
+\end{pspicture}
+\end{LTXexample}
+
+
+\begin{LTXexample}[width=5cm]
+\begin{pspicture}(4,4)\psgrid
+ \tiny\sffamily%
+ \PstPad[%
+ FluidFillColor=blue!30!white,%
+ FluidLineColor=blue!70!black,%
+ FSphereFillColor=yellow!40!white,%
+ FSphereLineColor=red!70!black,%
+ FluidString={fluid A},%
+ FluidShearOffsetX=0.1,%
+ FluidShearOffsetY=0.2,%
+ WallThickness=0.4,%
+ FSphereHeight=1,%
+ StringA={sliding insect pad}%
+ ](2,2)
+\end{pspicture}
+\end{LTXexample}
+
+
+\begin{LTXexample}[width=5cm]
+\begin{pspicture}(4,4)\psgrid
+ \PstSphereToWall[%
+ fluid=false,%
+ SphereRadius=1.5,%
+ SphereStartAngle=190,%
+ SphereEndAngle=350,%
+ SphereOffset=0.1,%
+ StringA={string a},%
+ StringB={string b}%
+ ](2,2)
+\end{pspicture}
+\end{LTXexample}
+
+\section{Low-level Macros}
+\label{sec:low-level-macros}
+
+There are four low-level macros: \macro{PstWall}, \macro{PstFluid},
+\macro{PstSphere} and \macro{PstFlattenedSphere}.
+
+\subsection{\macro{PstWall}}
+\label{sec:macropstwall}
+
+\begin{LTXexample}[width=5cm]
+ \begin{pspicture}[showgrid=true](4,2)
+ \PstWall(2,1.5)
+ \end{pspicture}
+\end{LTXexample}
+
+\subsection{\macro{PstFluid}}
+\label{sec:macropstfluid}
+
+\begin{LTXexample}[width=5cm]
+ \begin{pspicture}[showgrid=true](4,2)
+ \rput(2,1){\PstFluid[unit=1pt](0,0)}
+ \end{pspicture}
+\end{LTXexample}
+
+
+\clearpage
+
+\subsection{\macro{PstSphere}}
+\label{sec:macropstsphere}
+
+\begin{LTXexample}[width=5cm]
+ \begin{pspicture}[showgrid=true](4,2)
+ \PstSphere(2,.5)
+ \end{pspicture}
+\end{LTXexample}
+
+\subsection{\macro{PstFlattenedSphere}}
+\label{sec:macr}
+
+\begin{LTXexample}[width=5cm]
+ \begin{pspicture}[showgrid=true](4,2)
+ \PstFlattenedSphere(2,.5)
+ \end{pspicture}
+\end{LTXexample}
+
+
+\section{TODO}
+\label{sec:todo}
+
+\begin{itemize}
+\item Enhance calculations and number conversions.
+\item Implement different degrees of surface roughness.
+\item Implement fluid film contact angle parameter.
+\end{itemize}
+
+
+\section{Acknowledgements}
+\label{sec:acknowledgements}
+
+I would like to thank Herbert Voß and Alan Ristow for their help on getting me
+started with PSTricks macros and low-level calculations in PostScript and \TeX.
+
+\end{document}
+
+%%% Local Variables:
+%%% TeX-command-default: "Make"
+%%% mode: latex
+%%% TeX-master: t
+%%% End:
diff --git a/Master/texmf-dist/source/generic/pst-pad/Makefile b/Master/texmf-dist/source/generic/pst-pad/Makefile
new file mode 100644
index 00000000000..6d48721019b
--- /dev/null
+++ b/Master/texmf-dist/source/generic/pst-pad/Makefile
@@ -0,0 +1,38 @@
+MAIN = pst-pad-doc
+
+$(MAIN).pdf: \
+ showexpl.cfg \
+ pst-pad-doc.tex \
+ pst-pad.tex \
+ pst-pad.sty
+ latex $(MAIN).tex
+ latex $(MAIN).tex
+ dvips $(MAIN)
+ ps2pdf $(MAIN).ps
+
+.PHONY: clean
+clean:
+ /usr/bin/find . -iname '*~' -exec rm {} \;
+ /usr/bin/find . -iname '$(MAIN).aux' -exec rm {} \;
+ /usr/bin/find . -iname '$(MAIN).backup' -exec rm {} \;
+ /usr/bin/find . -iname '$(MAIN).bbl' -exec rm {} \;
+ /usr/bin/find . -iname '$(MAIN).blg' -exec rm {} \;
+ /usr/bin/find . -iname '$(MAIN).brf' -exec rm {} \;
+ /usr/bin/find . -iname '$(MAIN).cb' -exec rm {} \;
+ /usr/bin/find . -iname '$(MAIN).changes' -exec rm {} \;
+ /usr/bin/find . -iname '$(MAIN).dvi' -exec rm {} \;
+ /usr/bin/find . -iname '$(MAIN).idx' -exec rm {} \;
+ /usr/bin/find . -iname '$(MAIN).ilg' -exec rm {} \;
+ /usr/bin/find . -iname '$(MAIN).ind' -exec rm {} \;
+ /usr/bin/find . -iname '$(MAIN).inx' -exec rm {} \;
+ /usr/bin/find . -iname '$(MAIN).lof' -exec rm {} \;
+ /usr/bin/find . -iname '$(MAIN).log' -exec rm {} \;
+ /usr/bin/find . -iname '$(MAIN).lot' -exec rm {} \;
+ /usr/bin/find . -iname '$(MAIN).lox' -exec rm {} \;
+ /usr/bin/find . -iname '$(MAIN).out' -exec rm {} \;
+ /usr/bin/find . -iname '$(MAIN).ps' -exec rm {} \;
+ /usr/bin/find . -iname '$(MAIN).pdf' -exec rm {} \;
+ /usr/bin/find . -iname '$(MAIN).rel' -exec rm {} \;
+ /usr/bin/find . -iname '$(MAIN).tmp' -exec rm {} \;
+ /usr/bin/find . -iname '$(MAIN).toc' -exec rm {} \;
+ /usr/bin/find . -iname '$(MAIN).xcp' -exec rm {} \;
diff --git a/Master/texmf-dist/tex/generic/pst-pad/pst-pad.tex b/Master/texmf-dist/tex/generic/pst-pad/pst-pad.tex
new file mode 100644
index 00000000000..b97256dfea2
--- /dev/null
+++ b/Master/texmf-dist/tex/generic/pst-pad/pst-pad.tex
@@ -0,0 +1,463 @@
+%%
+%% This is file `pst-pad.tex'
+%%
+%% IMPORTANT NOTICE:
+%%
+%% Package `pst-pad.tex'
+%%
+%% Patrick Drechsler
+%%
+%% Version: $Id: pst-pad.tex 319 2008-02-19 17:43:16Z patrick $
+%%
+%%
+%% DESCRIPTION:
+%%
+%% `pst-pad' is a PSTricks package to draw adhesion systems like
+%% Johnson-Kendall-Roberts (JKR) models, Hertz adhesion model and wet adhesion
+%% model.
+%%
+%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%
+%%% TODO:
+%%
+%% PDTODO:A Implement "rough surfaces"
+%%
+%% PDTODO:A Create fluid contact angle option for Fluid. Not implemented yet.
+%%
+%% PDTODO:B Create options for surface combinations (basics of surface
+%% macros are present):
+%%
+%% - flat flat (ff): PstWall - PstWall
+%%
+%% - flat sphere (fs): PstWall - PstSphere
+%%
+%% - flat Fsphere (fp): PstWall - FSphere
+%%
+%% - surface rougness (roughness)
+%%
+%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%
+% ============================================================
+\csname PSTpadLoaded\endcsname%
+\let\PSTpadLoaded\endinput%
+%
+%% Require PSTricks, pst-node, multido and pst-xkey packages:
+%
+\ifx\PSTMultidoLoaded\endinput\else\input multido.tex\fi%
+\ifx\PSTricksLoaded\endinput\else\input pstricks.tex\fi%
+\ifx\PSTnodeLoaded\endinput\else\input pst-node.tex\fi%
+\ifx\PSTXKeyLoaded\endinput\else\input pst-xkey \fi%
+%
+%% Define Version info:
+%
+\def\fileversion{0.3}%
+\def\filedate{2008/02/19}%
+\message{`pst-pad' v\fileversion (pd)}%
+%
+% Allow to use the @ character for all internal macros
+\edef\PstAtCode{\the\catcode`\@}%
+\catcode`\@=11\relax%
+%
+%% Create new xkeyval family:
+%
+\pst@addfams{pst-pad}%
+%
+%% Not needed so far:
+% \pstheader{pst-pad.pro}
+%
+%% Activate special coordinates:
+%
+\SpecialCoor%
+%
+% ============================================================
+% Key definitions: ============================================
+% ============================================================
+\define@key[psset]{pst-pad}{WallThickness}{\pst@getlength{#1}\Pst@WallThickness}%
+\define@key[psset]{pst-pad}{WallLineWidth}{\pst@getlength{#1}\Pst@WallLineWidth}%
+\define@key[psset]{pst-pad}{WallLineColor}{\pst@getcolor{#1}\Pst@WallLineColor}%
+\define@key[psset]{pst-pad}{WallString}{\def\psk@WallString{#1}}%
+\define@key[psset]{pst-pad}{WallAngle}{\pst@getangle{#1}\Pst@WallAngle}%
+%%
+\define@key[psset]{pst-pad}{SphereRadius}{\pst@getlength{#1}\Pst@SphereRadius}%
+\define@key[psset]{pst-pad}{SphereStartAngle}{\pst@getangle{#1}\Pst@SphereStartAngle}%
+\define@key[psset]{pst-pad}{SphereEndAngle}{\pst@getangle{#1}\Pst@SphereEndAngle}%
+\define@key[psset]{pst-pad}{SphereString}{\def\psk@SphereString{#1}}%
+\define@key[psset]{pst-pad}{SphereOffset}{\pst@getlength{#1}\Pst@SphereOffset}%
+\define@key[psset]{pst-pad}{SphereFillColor}{\pst@getcolor{#1}\Pst@SphereFillColor}%
+\define@key[psset]{pst-pad}{SphereLineWidth}{\pst@getlength{#1}\Pst@SphereLineWidth}%
+\define@key[psset]{pst-pad}{SphereLineColor}{\pst@getcolor{#1}\Pst@SphereLineColor}%
+%%
+\define@key[psset]{pst-pad}{FSphereHeight}{\pst@getlength{#1}\Pst@FSphereHeight}%
+\define@key[psset]{pst-pad}{FSphereFillColor}{\pst@getcolor{#1}\Pst@FSphereFillColor}%
+\define@key[psset]{pst-pad}{FSphereString}{\def\psk@FSphereString{#1}}%
+\define@key[psset]{pst-pad}{FSphereLineWidth}{\pst@getlength{#1}\Pst@FSphereLineWidth}%
+\define@key[psset]{pst-pad}{FSphereLineColor}{\pst@getcolor{#1}\Pst@FSphereLineColor}%
+%%
+\define@key[psset]{pst-pad}{FluidMaxRadius}{\pst@getlength{#1}\Pst@FluidMaxRadius}%
+\define@key[psset]{pst-pad}{FluidMinRadius}{\pst@getlength{#1}\Pst@FluidMinRadius}%
+\define@key[psset]{pst-pad}{FluidShearOffsetX}{\pst@getlength{#1}\Pst@FluidShearOffsetX}%
+\define@key[psset]{pst-pad}{FluidShearOffsetY}{\pst@getlength{#1}\Pst@FluidShearOffsetY}%
+\define@key[psset]{pst-pad}{FluidHeight}{\pst@getlength{#1}\Pst@FluidHeight}%
+\define@key[psset]{pst-pad}{FluidFillColor}{\pst@getcolor{#1}\Pst@FluidFillColor}%
+\define@key[psset]{pst-pad}{FluidString}{\def\psk@FluidString{#1}}%
+\define@key[psset]{pst-pad}{FluidLineWidth}{\pst@getlength{#1}\Pst@FluidLineWidth}%
+\define@key[psset]{pst-pad}{FluidLineColor}{\pst@getcolor{#1}\Pst@FluidLineColor}%
+%%
+\define@key[psset]{pst-pad}{StringA}{\def\psk@StringA{#1}}%
+\define@key[psset]{pst-pad}{StringB}{\def\psk@StringB{#1}}%
+%%
+\define@key[psset]{pst-pad}{TotalAngle}{\pst@getangle{#1}\Pst@TotalAngle}%
+%%
+%% TODO: Change this variables from dim to number:
+\define@key[psset]{pst-pad}{RoughnessMax}{\pst@getlength{#1}\Pst@RoughnessMax}%
+\define@key[psset]{pst-pad}{RoughnessWidth}{\pst@getlength{#1}\Pst@RoughnessWidth}%
+%%
+\define@boolkey[psset]{pst-pad}[Pst@]{fluid}[true]{}%
+%%
+\define@boolkey[psset]{pst-pad}[Pst@]{rough}[true]{}%
+\define@boolkey[psset]{pst-pad}[Pst@]{roughA}[true]{}%
+\define@boolkey[psset]{pst-pad}[Pst@]{roughB}[true]{}%
+
+%% I might need something like this for defining different surfaces.
+%%
+%% Adapted From pst-labo.tex :
+%%
+%% 0->PAD 1->WALL 2->SPHERE
+% \def\pst@@PAD{pad}
+% \def\pst@@WALL{wall}
+% \def\pst@@SPHERE{sphere}
+% %
+% \define@key[psset]{pst-pad}{surfaceType}{%
+% \def\pst@tempA{#1}
+% \edef\psk@surfaceType{%
+% \ifx\pst@@PAD\pst@tempA 0 \else
+% \ifx\pst@@WALL\pst@tempA 1 \else
+% \ifx\pst@@SPHERE\pst@tempA 2 \else 0
+% \typeout{pst-pad: unknown surfaceType -> #1}
+% \typeout{ using type "pad" instead.}
+% \fi\fi\fi\fi% % default is pad
+% }}
+
+% ============================================================
+% Default psset values: =======================================
+% ============================================================
+\psset[pst-pad]{%
+ fluid=true, rough=false, roughA=false, roughB=false,%
+ %
+ WallThickness=1,WallString={},WallAngle=0,WallLineWidth=1pt,WallLineColor=black,%
+ %%
+ SphereStartAngle=180,SphereEndAngle=360,SphereRadius=1,SphereString={},%
+ SphereOffset=0,SphereFillColor=white,SphereLineWidth=1pt,SphereLineColor=black,%
+ %%
+ FSphereHeight=2,FSphereFillColor=lightgray,FSphereString={},FSphereLineWidth=1pt,%
+ FSphereLineColor=black,%
+ %%
+ FluidMaxRadius=1,FluidMinRadius=.5,FluidHeight=.5,%
+ FluidFillColor=yellow,FluidString={},%
+ FluidShearOffsetX=0,FluidShearOffsetY=0,FluidLineWidth=1pt,%
+ FluidLineColor=black,%
+ %%
+ RoughnessMax=0, RoughnessWidth=0,%
+ %%
+ StringA={},StringB={},TotalAngle=0} %
+
+% %% Redefine RoughnessMax and RoughnessWidth:
+% \def\Pst@Rm{\Pst@RoughnessMax\space 0.5 mul }%
+% %% testing:
+% \def\Rw{\Pst@RoughnessWidth\space \Pst@RoughnessMax }%
+
+
+% ============================================================
+% PstFluid ====================================================
+% ============================================================
+\def\PstFluid{\@ifnextchar[{\pst@PstFluid@i}{\pst@PstFluid@i[]}}%
+\def\pst@PstFluid@i[#1](#2){{%
+ \psset{#1}%
+ \begin@ClosedObj%
+ \rput{\Pst@WallAngle}(#2){%
+ %% Nodes (currently not used; They can be used outside of the macro as
+ %% referece points):
+ %% Fbr (Fluid bottom right):
+ \pnode(! \Pst@FluidMaxRadius \Pst@FluidShearOffsetX sub \Pst@FluidHeight neg){Fbr}%
+ %% Fbl (Fluid bottom left):
+ \pnode(! \Pst@FluidMaxRadius \Pst@FluidShearOffsetX add neg \Pst@FluidHeight neg){Fbl}%
+ %% Ftl (Fluid top left):
+ \pnode(! \Pst@FluidMaxRadius neg \Pst@FluidShearOffsetX add \Pst@FluidHeight){Ftl}%
+ %% Ftr (Fluid top right):
+ \pnode(! \Pst@FluidMaxRadius \Pst@FluidShearOffsetX add \Pst@FluidHeight){Ftr}%
+ %%
+ %%
+ \pscustom[linewidth=\Pst@FluidLineWidth,linecolor=\Pst@FluidLineColor,unit=1pt]{%
+ %% Left meniscus:
+ \pscurve%
+ (! \Pst@FluidMaxRadius neg \Pst@FluidShearOffsetX add \Pst@FluidHeight)%
+ (! \Pst@FluidMinRadius neg 0 \Pst@FluidShearOffsetY add)%
+ (! \Pst@FluidMaxRadius \Pst@FluidShearOffsetX add neg \Pst@FluidHeight neg)%
+ %% Bottom line:
+ \psline%
+ (! \Pst@FluidMaxRadius \Pst@FluidShearOffsetX add neg \Pst@FluidHeight neg)%
+ (! \Pst@FluidMaxRadius \Pst@FluidShearOffsetX sub \Pst@FluidHeight neg)%
+ %%
+ %% PDTODO:A Fix ZigZag and Curved line:
+ %%
+ %% Bottom line with zigzag:
+ % \multido{\rX=-\Pst@FluidMaxRadius+10}{5}{%
+ % \multido{\rX=-\Pst@FluidMaxRadius+10}{! \Pst@FluidMaxRadius 2 mul 10 div floor}{%
+ % \psline(\rX,-\Pst@FluidHeight)%
+ % (! \rX\space 2.5 add \Pst@FluidHeight neg 5 add)%
+ % (! \rX\space 7.5 add \Pst@FluidHeight neg 5 sub)%
+ % (! \rX\space 10 add \Pst@FluidHeight neg)%
+ % }
+ %% Bottom line with curve:
+ % \multido{\rX=-\Pst@FluidMaxRadius+10}{5}{%
+ % \pscurve(\rX,-\Pst@FluidHeight)%
+ % (! \rX\space 2.5 add \Pst@FluidHeight neg 5 add)%
+ % (! \rX\space 7.5 add \Pst@FluidHeight neg 5 sub)%
+ % (! \rX\space 10 add \Pst@FluidHeight neg)%
+ % }
+ %% Right meniscus:
+ \pscurve[liftpen=1]%
+ (! \Pst@FluidMaxRadius \Pst@FluidShearOffsetX sub \Pst@FluidHeight neg)%
+ (! \Pst@FluidMinRadius 0 \Pst@FluidShearOffsetY sub)%
+ (! \Pst@FluidMaxRadius \Pst@FluidShearOffsetX add \Pst@FluidHeight)%
+ %% Top line:
+ \psline%
+ (! \Pst@FluidMaxRadius \Pst@FluidShearOffsetX add \Pst@FluidHeight)%
+ (! \Pst@FluidMaxRadius neg \Pst@FluidShearOffsetX add \Pst@FluidHeight)%
+ %% Fill:
+ \fill[fillstyle=solid,fillcolor=\Pst@FluidFillColor]%
+ }%
+ %% String placement if String is present:
+ \ifx\psk@FluidString\@empty\else%
+ \rput[C]{-\Pst@TotalAngle}(0,0){\psk@FluidString}%
+ \fi}%
+ \end@ClosedObj%
+ }\ignorespaces}%
+
+% ============================================================
+% PstWall =====================================================
+% ============================================================
+\def\PstWall{\pst@object{PstWall}}%
+\def\PstWall@i(#1){{%
+ \pst@killglue%
+ \addbefore@par{linewidth=2pt}%
+ \use@par%
+ \rput{\Pst@WallAngle}(#1){%
+ \psset{unit=1pt,linewidth=\Pst@WallLineWidth,linecolor=\Pst@WallLineColor,dimen=middle}%
+ %% Main rectangle frame:
+ \psframe[linestyle=none,fillstyle=hlines]%
+ (! \Pst@FluidMaxRadius 10 add neg \Pst@WallThickness neg)%
+ (! \Pst@FluidMaxRadius 10 add 0)%
+ %% Extra line for "surface":
+ \psline%
+ (! \Pst@FluidMaxRadius 10 add neg 0)%
+ (! \Pst@FluidMaxRadius 10 add 0)%
+ %% String placement if string is present:
+ \ifx\psk@WallString\@empty\else%
+ \rput*[C]{\Pst@WallAngle}% pdtodo: fix this
+ % \rput*[C]{! \Pst@TotalAngle \Pst@WallAngle sub}%
+ (! -\Pst@WallThickness .5 mul 0 exch){\psk@WallString}%
+ \fi}%
+ }\ignorespaces}%
+
+
+% ============================================================
+% PstWallRough ================================================
+% ============================================================
+%%
+%% PDTODO:A This macro is not implemented yet.
+%%
+\def\PstWallRough{\pst@object{PstWallRough}}%
+\def\PstWallRough@i(#1){{%
+ \pst@killglue
+ \addbefore@par{linewidth=1pt}%
+ \use@par%
+ \rput{\Pst@WallAngle}(#1){%
+ \psset{unit=1pt,linewidth=\Pst@WallLineWidth,dimen=middle}%
+ %%
+ % \def\maxtmp{!\Pst@FluidMaxRadius\space 2 diff }
+ \psframe[fillstyle=solid,fillcolor=gray]%
+ (-\Pst@FluidMaxRadius,-\Pst@WallThickness)(\Pst@FluidMaxRadius,-\Pst@RoughnessMax)%
+ % (! \maxtmp \Pst@WallThickness neg)(\Pst@FluidMaxRadius,-\Pst@RoughnessMax)
+ %%
+ \pscustom{%
+ %% TODO:C Replace algebraic with RPN notation:
+ \psplot[plotpoints=100,algebraic=true]{-\Pst@FluidMaxRadius}{\Pst@FluidMaxRadius}%
+ {\Pst@RoughnessMax*sin(x*Pi*\Pst@RoughnessWidth-(Pi/2))}%
+% \psplot[plotpoints=100]{-\Pst@FluidMaxRadius}{\Pst@FluidMaxRadius}%
+% %% TODO:A Ignore pt units for this numeric test and use the original
+% %% input number!!!!:
+% {\Pst@RoughnessWidth round 2 mod 0 eq % <- IF CONDITION
+% {/MyFac \Pst@RoughnessWidth round 1 add def }% IF == TRUE STATEMENT
+% {/MyFac \Pst@RoughnessWidth round 2 div floor def } % <- ELSE STATEMENT
+% ifelse % <- END IF-ELSE
+% x \Pst@FluidMaxRadius round div MyFac mul 180 mul sin%
+% }% end psplot
+ \gsave%
+ \psline(\Pst@FluidMaxRadius,-\Pst@RoughnessMax)(-\Pst@FluidMaxRadius,-\Pst@RoughnessMax)%
+ \fill[fillcolor=gray,fillstyle=solid]%
+ \grestore%
+ }%
+ %% String placement if String is present:
+ \ifx\psk@WallString\@empty\else%
+ \rput*[C]{\Pst@WallAngle}% pdtodo: fix this
+ % \rput*[C]{! \Pst@TotalAngle \Pst@WallAngle sub}%
+ (! -\Pst@WallThickness .5 mul 0 exch){\psk@WallString}%
+ \fi%
+ }%
+ }\ignorespaces}%
+
+% ============================================================
+% PstSphere =====================================================
+% ============================================================
+\def\PstSphere{\pst@object{PstSphere}}%
+\def\PstSphere@i(#1){{%
+ \pst@killglue
+ \addbefore@par{linewidth=1pt}%
+ \use@par%
+ \rput(#1){%
+ \psset{unit=1pt,linewidth=\Pst@SphereLineWidth,linecolor=\Pst@SphereLineColor,dimen=middle}%
+ %% Draw the "sphere" using the psarc macro:
+ \psarc[fillstyle=solid,fillcolor=\Pst@SphereFillColor]%
+ (0,\Pst@SphereRadius){\Pst@SphereRadius}%
+ {\Pst@SphereStartAngle}{\Pst@SphereEndAngle}%
+ %% Display string if present:
+ \ifx\psk@SphereString\@empty\else%
+ \rput[C]{\Pst@TotalAngle}%
+ (! \Pst@SphereRadius .5 mul \pst@number\pslinewidth add 0 exch)%
+ {\psk@SphereString}%
+ \fi}%
+ }\ignorespaces}%
+
+% ============================================================
+% PstFlattenedSphere ==========================================
+% ============================================================
+\def\PstFlattenedSphere{\pst@object{PstFlattenedSphere}}%
+\def\PstFlattenedSphere@i(#1){{%
+ \pst@killglue
+ \addbefore@par{linewidth=1pt}%
+ \use@par%
+ \rput(#1){%
+ \psset{unit=1pt,linewidth=\Pst@FSphereLineWidth,linecolor=\Pst@FSphereLineColor,dimen=middle}%
+ %% The "flattened sphere" is drawn as a rectangle frame with rounded
+ %% corners (arc). It is then overlayed and clipped by a rectangle half
+ %% the height to produce the look of a flattened sphere.
+ \begin{psclip}{%
+ \psframe[linestyle=none]%
+ (!\Pst@FSphereHeight .5 mul \Pst@FluidMaxRadius add neg 0)%
+ (!\Pst@FSphereHeight .5 mul \Pst@FluidMaxRadius add \Pst@FSphereHeight .5 mul)%
+ }%
+ \psframe[framearc=2,fillstyle=solid,fillcolor=\Pst@FSphereFillColor]%
+ (!\Pst@FluidMaxRadius neg \Pst@FSphereHeight .5 mul sub 0)%
+ (!\Pst@FluidMaxRadius \Pst@FSphereHeight .5 mul add \Pst@FSphereHeight)%
+ \end{psclip}%
+ %% Display string if present:
+ \ifx\psk@FSphereString\@empty\else%
+ \rput[C]{-\Pst@TotalAngle}(! \Pst@FSphereHeight .3 mul 0 exch){\psk@FSphereString}%
+ \fi}%
+ }\ignorespaces}%
+
+% ============================================================
+% PstPad ======================================================
+% ============================================================
+\def\PstPad{\pst@object{PstPad}}%
+\def\PstPad@i(#1){{%
+ \pst@killglue%
+ \addbefore@par{linewidth=1pt}%
+ \use@par%
+ \rput{\Pst@TotalAngle}(#1){%
+ \psset{unit=1pt}%
+ %% Test for fluid true/false:
+ \ifPst@fluid%
+ %%fluid = true:
+ \PstFluid(0,0)%
+ \PstFlattenedSphere[FSphereString=\psk@StringA]%
+ (! 0 \Pst@FluidShearOffsetX add \Pst@FluidHeight)%
+ %% Test if WallString is empty:
+ \ifx\psk@WallString\@empty%
+ \PstWall%
+ (! 0 \Pst@FluidShearOffsetX sub \Pst@FluidHeight neg)%
+ \else%
+ \PstWall[WallString=\psk@WallString]%
+ (! 0 \Pst@FluidShearOffsetX sub \Pst@FluidHeight neg)%
+ \fi%
+ \else%
+ %%fluid = false:
+ \PstFlattenedSphere(0,0)%
+ \PstWall(0,0)%
+ \fi%
+ }%
+ }\ignorespaces}%
+
+
+% ============================================================
+% WallToWall ==================================================
+% ============================================================
+\def\PstWallToWall{\pst@object{PstWallToWall}}%
+\def\PstWallToWall@i(#1){{%
+ \pst@killglue%
+ \addbefore@par{linewidth=4pt}%
+ \use@par%
+ \rput{\Pst@TotalAngle}(#1){%
+ \psset{unit=1pt}%
+ \PstFluid(0,0)%
+ %% Test if StringA is empty:
+ \ifx\psk@StringA\@empty%
+ \PstWall[WallAngle=180]%
+ (! 0 \Pst@FluidShearOffsetX add \Pst@FluidHeight)%
+ \else%
+ \PstWall[WallAngle=180,WallString=\psk@StringA]%
+ (! 0 \Pst@FluidShearOffsetX add \Pst@FluidHeight)%
+ \fi%
+ %% Test if StringB is empty:
+ \ifx\psk@StringB\@empty%
+ \PstWall%
+ (! 0 \Pst@FluidShearOffsetX sub \Pst@FluidHeight neg)%
+ \else%
+ \PstWall[WallString=\psk@StringB]%
+ (! 0 \Pst@FluidShearOffsetX sub \Pst@FluidHeight neg)%
+ \fi%
+ }%
+ }\ignorespaces}%
+
+% ============================================================
+% SphereToWall ================================================
+% ============================================================
+%%
+%% PDTODO:A I would like this macro to have "fluid = false" as the default
+%% value (all other major macros need "fluid = true" as default values).
+\def\PstSphereToWall{\pst@object{PstSphereToWall}}%
+\def\PstSphereToWall@i(#1){{%
+ \pst@killglue%
+ \addbefore@par{linewidth=1pt}%
+ \use@par%
+ \rput{\Pst@TotalAngle}(#1){%
+ \psset{unit=1pt}%
+ %% Test for fluid true/false:
+ \ifPst@fluid% fluid = true:
+ \PstFluid(0,0)% <- display fluid macro
+ \PstSphere[SphereString=\psk@StringA]%
+ (! 0 \Pst@FluidShearOffsetX add \Pst@FluidHeight)%
+ %% Test if StringB is empty:
+ \ifx\psk@StringB\@empty%
+ \PstWall[fillstyle=none]% <- display wall macro
+ (! 0 \Pst@FluidShearOffsetX sub \Pst@FluidHeight neg)%
+ \else%
+ \PstWall[fillstyle=none,WallString=\psk@StringB]% <- display wall macro
+ (! 0 \Pst@FluidShearOffsetX sub \Pst@FluidHeight neg)%
+ \fi%
+ \else% fluid = false:
+ \PstWall[linewidth=1pt,fillstyle=none,WallString=\psk@StringB](0,0)% <- display wall macro
+ \PstSphere[SphereString=\psk@StringA](0,-\Pst@SphereOffset)% <- display sphere macro
+ \psline[linewidth=0.8pt,linestyle=dashed,linecolor=gray]%
+ (-\Pst@FluidMaxRadius,0)(\Pst@FluidMaxRadius,0)%
+ \PstWall[linewidth=1pt,fillstyle=none](0,0)% <- display wall macro
+ % \PstWallRough[unit=1cm](0,\Pst@RoughnessMax)%
+ \fi%
+ }%
+ }\ignorespaces}%
+
+
+% EOF \ No newline at end of file
diff --git a/Master/texmf-dist/tex/latex/pst-pad/pst-pad.sty b/Master/texmf-dist/tex/latex/pst-pad/pst-pad.sty
new file mode 100644
index 00000000000..789450bb447
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/pst-pad/pst-pad.sty
@@ -0,0 +1,7 @@
+\RequirePackage{pstricks}
+\ProvidesPackage{pst-pad}[2008/02/08 package wrapper for
+ pst-pad.tex (pd)]
+\input{pst-pad.tex}
+\ProvidesFile{pst-pad.tex}
+ [\filedate\space v\fileversion\space `PST-pad' (pd)]
+\endinput
diff --git a/Master/texmf-dist/tex/latex/pst-pad/showexpl.cfg b/Master/texmf-dist/tex/latex/pst-pad/showexpl.cfg
new file mode 100644
index 00000000000..6dbd1eb3db0
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/pst-pad/showexpl.cfg
@@ -0,0 +1,44 @@
+% config file for showexpl.sty
+%
+\ProvidesFile{showexpl.cfg}
+ [2008/02/08 v0.01 Definitions for the showexpl package (pd)]
+%
+\definecolor{hellgelb}{rgb}{1,1,0.85}
+\definecolor{colKeys}{rgb}{0,0,1}
+\definecolor{colIdentifier}{rgb}{0,0,0}
+\definecolor{colComments}{rgb}{1,0,0}
+\definecolor{colString}{rgb}{0,0.5,0}
+
+\lstset{%
+ preset=\centering,%
+ rframe={},%
+ language=[AlLaTeX]TeX,%
+ float=hbp,%
+ basicstyle=\footnotesize\ttfamily,%
+ identifierstyle=\color{colIdentifier},%
+ keywordstyle=\color{colKeys},%
+ stringstyle=\color{colString},%
+ commentstyle=\itshape\color{colComments},%
+% columns=flexible,%
+% columns=fullflexible,%
+ columns=fixed,
+ tabsize=4,%
+ frame=single,%
+ extendedchars=true,%
+ showspaces=false,%
+ showstringspaces=false,%
+ numbers=left,%
+ numberstyle=\tiny\ttfamily,%
+ breaklines=true,%
+ breakindent=10pt,%
+ backgroundcolor=\color{hellgelb},%
+ breakautoindent=true,%
+ captionpos=t,%
+ xleftmargin=1em,%
+ xrightmargin=\fboxsep,%
+ numbersep=1em,%
+% xrightmargin=-1cm,%
+% relwidth=0.5,%
+% columnsep=10pt%
+}
+\renewcommand*\SX@Info{}%
diff --git a/Master/tlpkg/bin/ctan2tds b/Master/tlpkg/bin/ctan2tds
index 448ab98d8d1..db9dfbfc69f 100755
--- a/Master/tlpkg/bin/ctan2tds
+++ b/Master/tlpkg/bin/ctan2tds
@@ -329,6 +329,7 @@ chdir $startdir || die "chdir($startdir) failed: $!"; # back to raw
'pst-ob3d', "&MAKEpst",
'pst-optic', "&MAKEpst",
'pst-osci', "&MAKEpst",
+ 'pst-pad', "&MAKEpst",
'pst-pdf', "&MAKEpst",
'pst-pdgr', "&MAKEpst",
'pst-poly', "&MAKEpst",
diff --git a/Master/tlpkg/bin/tlpkg-ctan-check b/Master/tlpkg/bin/tlpkg-ctan-check
index 58023bc37d8..1264458ba71 100755
--- a/Master/tlpkg/bin/tlpkg-ctan-check
+++ b/Master/tlpkg/bin/tlpkg-ctan-check
@@ -139,7 +139,8 @@ my @WorkingTLP = qw(
pst-fr3d pst-fractal pst-func
pst-geo pst-grad pst-infixplot pst-jtree pst-labo
pst-lens pst-light3d pst-math pst-ob3d pst-optexp pst-optic
- pst-osci pst-pdf pst-pdgr pst-qtree pst-solide3d pst-soroban pst-spectra
+ pst-osci pst-pad pst-pdf pst-pdgr pst-qtree
+ pst-solide3d pst-soroban pst-spectra
pst-slpe pst-stru pst-uml pst-vue3d
pstricks pstricks-add
qcm qstest quotmark qtree
diff --git a/Master/tlpkg/tlpsrc/collection-pstricks.tlpsrc b/Master/tlpkg/tlpsrc/collection-pstricks.tlpsrc
index 8a9271e8e89..e063eaea0d0 100644
--- a/Master/tlpkg/tlpsrc/collection-pstricks.tlpsrc
+++ b/Master/tlpkg/tlpsrc/collection-pstricks.tlpsrc
@@ -36,6 +36,7 @@ depend pst-ob3d
depend pst-optexp
depend pst-optic
depend pst-osci
+depend pst-pad
depend pst-pdgr
depend pst-poly
depend pst-qtree
diff --git a/Master/tlpkg/tlpsrc/pst-pad.tlpsrc b/Master/tlpkg/tlpsrc/pst-pad.tlpsrc
new file mode 100644
index 00000000000..17304249a34
--- /dev/null
+++ b/Master/tlpkg/tlpsrc/pst-pad.tlpsrc
@@ -0,0 +1,2 @@
+name pst-pad
+category Package