diff options
Diffstat (limited to 'Master')
38 files changed, 1594 insertions, 7041 deletions
diff --git a/Master/texmf-dist/tex/generic/pstricks/Changes b/Master/texmf-dist/doc/generic/pstricks/Changes.generic index 7f6e9558747..7f6e9558747 100644 --- a/Master/texmf-dist/tex/generic/pstricks/Changes +++ b/Master/texmf-dist/doc/generic/pstricks/Changes.generic diff --git a/Master/texmf-dist/tex/latex/pstricks/Changes b/Master/texmf-dist/doc/generic/pstricks/Changes.latex index a1116de2b6d..a1116de2b6d 100644 --- a/Master/texmf-dist/tex/latex/pstricks/Changes +++ b/Master/texmf-dist/doc/generic/pstricks/Changes.latex diff --git a/Master/texmf-dist/doc/generic/pstricks/Makefile b/Master/texmf-dist/doc/generic/pstricks/Makefile index ce772c9e8cd..38c4f089a4f 100644 --- a/Master/texmf-dist/doc/generic/pstricks/Makefile +++ b/Master/texmf-dist/doc/generic/pstricks/Makefile @@ -1,97 +1,48 @@ -# Rolf Niepraschk, niepraschk@ptb.de, 2003-02-23 +# `Makefile' for `pst-3dplot.pdf', hv, 2007/03/17 -.SUFFIXES : .tex .dvi .ps .pdf .eps +.SUFFIXES : .tex .ltx .dvi .ps .pdf .eps -MAIN = pst-user +PACKAGE = pst-news2008 -# D.G. modification begin - Feb. 28, 2003 -#LATEX = elatex -LATEX = latex -# D.G. modification end -PDFLATEX = pdfelatex -PS2PDF = ps2pdf - -# D.G. modification begin - Feb. 28, 2003 -PS2PDF_OPT1 = -sPAPERSIZE=letter -#PS2PDF_OPT1 = -sPAPERSIZE=a4 -# D.G. modification end -PS2PDF_OPT2 = -sPAPERSIZE=letter - -DVIPSFLAGS1 = -Ppdf -G0 -DVIPSFLAGS2 = -Pwww -E -#GSOPT = GS_OPTIONS=-dAutoRotatePages=/None -GSOPT = GS_OPTIONS=-dPDFSETTINGS=/prepress +MAIN = $(PACKAGE) -PICS := $(PICS:.eps=.pdf) +LATEX = latex -# D.G. modification begin - Mar. 7, 2003 -#ADDINPUTS = pst-user.cls defaults.pst -ADDINPUTS = pst-user.cls defaults.pst \ - psd-cove.tex psd-esse.tex psd-basi.tex psd-para.tex psd-cust.tex \ - psd-pict.tex psd-text.tex psd-node.tex psd-tree.tex psd-fill.tex \ - psd-3d.tex psd-spec.tex psd-help.tex -# D.G. modification end +ARCHNAME = $(MAIN)-$(shell date +%y%m%d) -ARCHNAME = $(MAIN)-$(shell date +%y%m%d).zip +ARCHFILES = $(PACKAGE).sty $(PACKAGE).tex $(PACKAGE).pro $(MAIN).tex README Changes Makefile -# D.G. modification begin - Mar. 7, 2003 -TARNAME = $(MAIN)-$(shell date +%y%m%d).tar -# D.G. modification end +all : doc clean +doc: $(MAIN).pdf -# D.G. modification begin - Feb. 28, 2003 -#all : $(MAIN).pdf $(MAIN)-old.pdf -all : $(MAIN).pdf -# D.G. modification end +$(MAIN).pdf : $(MAIN).ps + GS_OPTIONS=-dAutoRotatePages=/None ps2pdf $< +$(MAIN).ps : $(MAIN).dvi + dvips $< -$(MAIN).dvi : $(MAIN).tex $(ADDINPUTS) +$(MAIN).dvi : $(MAIN).tex + $(LATEX) $< + $(LATEX) $< + if ! test -f $(basename $<).glo ; then touch $(basename $<).glo; fi + if ! test -f $(basename $<).idx ; then touch $(basename $<).idx; fi + makeindex -s gglo.ist -t $(basename $<).glg -o $(basename $<).gls \ + $(basename $<).glo + makeindex -t $(basename $<).ilg -o $(basename $<).ind \ + $(basename $<).idx + bibtex $(basename $<) $(LATEX) $< -# D.G. modification begin - Feb. 28, 2003 -# makeindex -t $(basename $<).ilg $(basename $<) -# D.G. modification end - makeindex -t $(basename $<).ilg -s pst-user.ist $(basename $<) $(LATEX) $< - -$(MAIN).pdf : $(MAIN).ps - $(PS2PDF) $(PS2PDF_OPT1) $< $@ - -%.ps : %.dvi - dvips $(DVIPSFLAGS1) $< -o $@ - -pst-user-old.pdf : pst-user-old.tex pst-usr1.pdf pst-usr2.pdf pst-usr3.pdf \ - pst-usr4.pdf - $(PDFLATEX) $< - -pst-usr%.pdf : pst-usr%.ps.gz - zcat $< | $(PS2PDF) $(PS2PDF_OPT2) - > $@ clean : - $(RM) $(addprefix $(MAIN), .aux .ilg .ind .idx .log .out .tmp .toc) -# D.G. modification begin - Mar. 7, 2003 -# $(RM) $(addprefix $(MAIN)-old, .log .aux) -# $(RM) pst-usr?.pdf -# D.G. modification end + $(RM) $(addprefix $(MAIN), .log .aux .glg .glo .gls .ilg .idx .ind .tmp .toc .out .blg .Roessler .bbl ) + $(RM) $(addprefix $(MAIN), .dvi .ps) veryclean : clean - $(RM) $(addprefix $(MAIN), .ps .dvi .pdf) -# D.G. modification begin - Mar. 7, 2003 -# $(RM) $(MAIN)-old.pdf - $(RM) *.aux -# D.G. modification end + $(RM) $(addprefix $(MAIN), .pdf .bbl .blg) arch : - zip $(ARCHNAME) $(MAIN).tex $(ADDINPUTS) pst-user-old.tex Makefile - @ echo ; echo $(ARCHNAME) ; echo + zip $(ARCHNAME).zip $(ARCHFILES) -# D.G. modification begin - Mar. 7, 2003 -tar: - tar -cf $(TARNAME) $(MAIN).tex $(ADDINPUTS) \ - pst-user.ist pst-user.idx \ - CHANGES VERSIONS TODO \ - Makefile artistic.txt defaults.pst \ - pstricks.tex pst-eps.tex pst-node.tex pst-tree.tex \ - *.sty pst-user.pdf - gzip --force $(TARNAME) - ls -l $(TARNAME).gz -# D.G. modification end +# EOF diff --git a/Master/texmf-dist/doc/generic/pstricks/defaults.pst b/Master/texmf-dist/doc/generic/pstricks/defaults.pst deleted file mode 100644 index 4e3ba5f27f2..00000000000 --- a/Master/texmf-dist/doc/generic/pstricks/defaults.pst +++ /dev/null @@ -1,149 +0,0 @@ -%% defaults.pst -%% Created with unix shell commands: -%% grep ^.psset\@ pstricks.tex > defaults.pst -%% grep ^.psset\@ pst-node.tex >> defaults.pst -%% grep ^.psset\@ pst-grad.tex >> defaults.pst -%% grep ^.psset\@ pst-coil.tex >> defaults.pst -%% grep ^.psset\@ pst-eps.tex >> defaults.pst -%% grep ^.psset\@ pst-plot.tex >> defaults.pst -%% grep ^.psset\@ pst-tree.tex >> defaults.pst -%% Input by pst-user.tex -\psset@swapaxes{false} -\psset@showpoints{false} -\psset@border{0pt} -\psset@bordercolor{white} -\psset@doubleline{false} -\psset@doublesep{1.25\pslinewidth} -\psset@doublecolor{white} -\psset@shadow{false} -\psset@shadowsize{3pt} -\psset@shadowangle{-45} -\psset@shadowcolor{darkgray} -\psset@linewidth{.8pt} -\psset@linecolor{black} -\psset@dash{5pt 3pt} -\psset@dashadjust{true} -\psset@dotsep{3pt} -\psset@linestyle{solid} -\psset@fillcolor{white} -\psset@hatchwidth{.8pt} -\psset@hatchsep{4pt} -\psset@hatchcolor{black} -\psset@hatchangle{45} -\psset@fillstyle{none} -\psset@arrowscale{1} -\psset@arrowsize{1.5pt 2} -\psset@arrowlength{1.4} -\psset@arrowinset{.4} -\psset@tbarsize{2pt 5} -\psset@bracketlength{.15} -\psset@rbracketlength{.15} -\psset@arrows{-} -\psset@liftpen{0} -\psset@linetype{0} -\psset@gangle{0} -\psset@curvature{1 .1 0} -\psset@dotsize{2pt 2} -\psset@dotscale{1} -\psset@dotangle{0} -\psset@dotstyle{*} -\psset@linearc{0pt} -\psset@framearc{0} -\psset@cornersize{relative} -\psset@dimen{outer} -\psset@gridwidth{.8pt} -\psset@griddots{0} -\psset@gridcolor{black} -\psset@subgridwidth{.4pt} -\psset@subgridcolor{gray} -\psset@subgriddots{0} -\psset@subgriddiv{5} -\psset@gridlabels{10pt} -\psset@gridlabelcolor{black} -\psset@framesep{3pt} -\psset@boxsep{true} -\psset@trimode{U} -\psset@arcsep{0} -\psset@radius{.25cm} -\psset@ref{c} -\psset@rot{0} -\psset@labelsep{5pt} -\psset@refangle{0} -\psset@nodealign{false} -\psset@href{0} -\psset@vref{.7ex} -\psset@framesize{10pt} -\psset@nodesep{0pt} -\psset@arm{10pt} -\psset@offset{0pt} -\psset@angle{0} -\psset@arcangle{8} -\psset@ncurv{.67} -\psset@loopsize{1cm} -\psset@boxsize{.4cm} -\psset@nrot{0} -\psset@npos{} -\psset@tpos{.5} -\psset@shortput{none} -\psset@colsep{1.5cm} -\psset@rowsep{1.5cm} -\psset@mcol{c} -\psset@mnodesize{-1pt} -\psset@mnode{R} -\psset@emnode{none} -\psset@gradbegin{gradbegin} -\psset@gradend{gradend} -\psset@gradlines{500} -\psset@gradmidpoint{.9} -\psset@gradangle{0} -\psset@coilwidth{1cm} -\psset@coilheight{1} -\psset@coilarm{.5cm} -\psset@coilaspect{45} -\psset@coilinc{10} -\psset@bbllx{0pt} -\psset@bblly{0pt} -\psset@bburx{0pt} -\psset@bbury{0pt} -\psset@headers{none} -\psset@checkfile{true} -\psset@makeeps{new} -\psset@headerfile{} -\psset@plotstyle{line} -\psset@plotpoints{50} -\psset@ticksize{3pt} -\psset@tickstyle{full} -\psset@ticks{all} -\psset@labels{all} -\psset@Ox{0} -\psset@Dx{1} -\psset@dx{0} -\psset@Oy{0} -\psset@Dy{1} -\psset@dy{0} -\psset@showorigin{true} -\psset@axesstyle{axes} -\psset@treemode{D} -\psset@treeflip{false} -\psset@root{\TC} -\psset@treesep{.75cm} -\psset@xtreesep{0pt} -\psset@treenodesize{-1pt} -\psset@treefit{tight} -\psset@treerep{1} -\psset@showbbox{false} -\psset@levelsep{2cm} -\psset@varlevelsep{false} -\psset@treeshift{0} -\psset@skiplevels{0} -\psset@unary{middle} -\psset@leafalign{false} -\psset@edge{\ncline} -\psset@skipedge{} -\psset@fansize{1cm} -\psset@tnsep{} -\psset@tnyref{} -\psset@tnheight{\ht\strutbox} -\psset@tndepth{\dp\strutbox} -\psset@tnpos{} -\endinput diff --git a/Master/texmf-dist/doc/generic/pstricks/examples/changes.pdf b/Master/texmf-dist/doc/generic/pstricks/examples/changes.pdf Binary files differnew file mode 100644 index 00000000000..7d921997282 --- /dev/null +++ b/Master/texmf-dist/doc/generic/pstricks/examples/changes.pdf diff --git a/Master/texmf-dist/doc/generic/pstricks/examples/changes.tex b/Master/texmf-dist/doc/generic/pstricks/examples/changes.tex new file mode 100644 index 00000000000..d431a41be2c --- /dev/null +++ b/Master/texmf-dist/doc/generic/pstricks/examples/changes.tex @@ -0,0 +1,662 @@ +%% BEGIN changes.tex +%% +%% Changes listing for PSTricks. +%% Run with LaTeX, with or without the NFSS. +%% +%% Change these for a4 paper: +%\def\paperwidth{8.5in} +%\def\paperheight{11in} + +\def\FileVersion{0.93a} +\def\FileDate{March 12, 1993} + +\documentclass[11pt,a4paper]{article} +\usepackage[T1]{fontenc} + +%% PAGE PARAMETERS + +\usepackage{fancybox} +% Paragraphs are marked by large space rather than indentation: +\parindent 0pt +\parskip 6pt plus 1pt minus 1pt + +% No headers, 1in top margin +\usepackage[dvips]{geometry} +\geometry{tmargin=0pt,bmargin=3.3cm,headheight=0pt,headsep=0pt, +textheight=9in, footskip=.625in} +\usepackage[scaled]{luximono} +\usepackage{mathpazo} + + +% Now adjust for different paper size: +\newdimen\mydim +\mydim=\paperwidth +\advance\mydim-8.5in +\divide\mydim 2 +\advance\oddsidemargin \mydim +\advance\evensidemargin \mydim +\mydim=\paperheight +\advance\mydim-11in +\divide\mydim 2 +\advance\topmargin \mydim + +%% OTHER + +\renewcommand{\EveryVerbatimLine}[2]{} + +% Short meta (works in verbatim. Can't use < for other purposes. +\catcode`\<=13 \def<#1>{{\rm\it #1\/}} % <meta> (works in verbatim) + +% Short verbatim. +\catcode`\"=13 +\def"{\verb"} + +\catcode`\@=12 % In case I'm using AmS-LaTeX + +\begin{document} + +\begin{center} +{\large\bfseries Changes listing for PSTricks}\\[6pt] + Version \FileVersion\\ + \FileDate\\[6pt] + Timothy Van Zandt\\ + tvz@Princeton.EDU +\end{center} + + The PSTricks package is still preliminary. The features list + and user interface are unlikely to change much in the short term, but + the internal code is not stable. + +\section{VERSION 0.93 and 0.93a} + + There have been substantial changes (hopefully for the last time). + + This section describes the changes from 0.92 to 0.93a. The only differencea +between 0.93 and 0.93a are that a bug in "\nccircle" was fixed, and the +features in "\pst-old.tex" where either incorporated into the main files +("\Rput", "\Lput", "\Mput", "\Polar" and "\Cartesian") or eliminated entirely +("\NewPsput", "\OldPsput" and the old "\pscustom" commands). What is described +\subsection{Incompatible changes} + + {\bf + These changes may require modification to files prepared with version 0.92. +Sorry about the inconvenience. To avoid letting new changes catch you by +surprise, get on the PSTricks mailing list.} +\begin{enumerate} + +\item + "\SpecialCoor" has changed completely. See User's Guide for details. Most of +these changes were announced shortly after the release of v0.92, but +"pst-beta.tex" users should note that raw PostScript coordinates are now +delimited by "!" rather than by ":". + + {\bfseries How to fix files:} Search for "\SpecialCoor" in your file. Change the +old syntax to the new syntax according to this table: + \begin{center} + \begin{tabular}{ccl} + {\em Old} & {\em New} & {\em Type}\\[2pt] + "(c<x>,<y>)" & "(<x>,<y>)" & Cartesian.\\ + "(p<r>,<a>)" & "(<r>;<a>)" & Polar.\\ + "(n{<node>})" & "(<node>)" & Center of <node>.\\ + "(N[<par>]{<node>})" & "([<par>]<node>)" & Relative to <node>.\\ + "(m{<coor1>}{<coor2>})" & "(<coor1>|<coor2>)" & Mixed. + \end{tabular} + \end{center} +In addition, if you used the syntax "(:<ps>)" from "pst-beta.tex" for raw +postscript code, search for "(:" and replace by "(!". + +\item + Angles can no longer be specified by "{<x>,<y>}". "\SpecialCoor" lets you +use coordinates as angles, but they must be enclosed in "()". E.g., +"{(<x>,<y>)}". See User's Guide for details. + + {\bfseries How to fix files:} Add the parentheses "()" to angles given by +"{<x>,<y>}" and and precede this usage by "\SpecialCoor". However, there is no +easy way to search for "{<x>,<y>}" (unless you are good at using Unix's +regular expressions). On the other hand, you probably didn't use this features +much, and it will be easier to just wait for the old usage to cause errors. + +\item + The +\begin{LVerbatim} + arrowsize=<dim num1 num2 num3> +\end{LVerbatim} +parameter has been replaced by +\begin{LVerbatim} + arrowsize=<dim num1> + arrowlength=<num2> + arrowinset=<num3> +\end{LVerbatim} + + {\bfseries How to fix files:} + Search for "arrowsize", and break up your parameter change. You can also +just do nothing, because if you use the old syntax for "arrowsize", <num2> and +<num3> will simply be ignored. + +\item + The +\begin{LVerbatim} + tbarsize=<dim num1 num2> +\end{LVerbatim} +parameter has been replaced by +\begin{LVerbatim} + tbarsize=<dim num1> + bracketlength=<num2> % For square brackets. + rbracketlength=<num2> % For round brackets. +\end{LVerbatim} + + {\bfseries How to fix files:} + Search for "tbarsize", and break up your parameter change. You can also just +do nothing, because if you use the old syntax for "tbarsize", <num2> will +simply be ignored. + +\item + "\pscustom" has changed substantially. E.g., (i) there is no "(x,y)" +argument, (ii) plots ("\psplot", etc.) no longer run backwards, and (iii) the +treatment of the currentpoint is much different. Also, most of the special +commands for use only within "\pscustom" have changed. See the User's Guide +for details. + + {\bfseries How to fix files:} + You must search for each use of "\pscustom", and make the following changes: + \begin{itemize} + \item Replace "\pscustom"'s old "(<x>,<y>)" argument by "\moveto(<x>,<y>)" +at the beginning of "\pscustom"'s main argument. + + \item Make the following substitutions inside "\pscustom"'s main argument: + \begin{center} + \begin{tabular}{ll} + {\em Old} & {\em New}\\[2pt] + "\pscode" & "\code"\\ + "\pscoor" & "\coor"\\ + "\psdim" & "\dim"\\ + "\psmove" & "\moveto"\\ + "\psclosepath" & "\closepath"\\ + "\psgroup{<stuff>}" & "\gsave" <stuff> "\grestore"\\ + "\psstroke" & "\stroke"\\ + "\psfill" & "\fill" + \end{tabular} + \end{center} + You can instead define, e.g., + \begin{quote} + "\def\pscode{\code}" , or\\ + "\newcommand{\pscode}{\code}" + \end{quote} + and + \begin{quote} + "\def\psgroup#1{\gsave #1 \grestore}" , or\\ + "\newcommand{\psgroup}{\gsave #1 \grestore}" + \end{quote} + + \item Check the output from your "\pscustom" command. If, after making the +above changes, things come out differently than inspected, it is probably +because the plot commands run ``forwards'' rather than ``backwards'', or +because of the new way that "\pscustom" treats the current point. Fix these on +a case-by-case basis. + \end{itemize} + +\item + "\listplot", "\psplot" and "\parametricplot" no longer have an "(<x>,<y>)" +argument. Use the "origin" parameter instead. + + {\bfseries How to fix files:} + Search for "\listplot", "\psplot" and "\parametricplot". Replace any +"(<x>,<y>)" argument by the parameter change "[origin={<x>,<y>}]". + +\item + To suppress labels with "\psaxes", use "labels=none/x/y", rather than +setting "Dx" and "Dy" to empty values. + + {\bfseries How to fix files:} + Search for "=}", "=," and "=]". Remove the "Dx=," and other such parameter +settings you find, and replace instead by "labels=none/x/y", depending on +whether you want no labels, labels on the x-axes only, or labels on the y-axis +only. + +\item + The "\scalebox" macro should use a space rather than a comma to separate the +x and y scaling factors, when two scaling factors are given. + + {\bfseries How to fix files:} + Wait to get error about bad numbers, or search for "\scalebox" and replace +"\scalebox{<num1>,<num2>}" by "\scalebox{<num1> <num2>}". + +\item + The "dblframewidth" parameter is gone, because "\psdblframebox" is now just +a variant of "\psframebox" with "doubleline=true". The width of each frame is +now just "linewidth" + + {\bfseries How to fix files:} + Search for "dblframewidth" and replace the parameter setting be a +"linewidth" parameter setting. + +\item + The "\OldPsput" and "\Newpsput" commands are gone. These were originally +devised to retain compatibility with an older version of PSTricks that had a +"\psput" command instead of "\rput". + + {\bfseries How to fix files:} + If you used "\psput" with the new syntax, then search for "\psput" and +replace by "\rput". + + If you used "\psput" with the old syntax, then either search for "\psput" +commands and replace with "\rput" commands with the new syntax, or put the +following in a file so that the "\OldPsput" command defines "\psput" with the +old syntax: +\begingroup\catcode`\<=12 +\begin{LVerbatim} + \def\old@psput{\begingroup\old@psput@} + \def\old@psput@{% + \def\refpoint@x{.5}\def\refpoint@y{.5}% + \pst@ifstar{\@ifnextchar[% + {\old@psput@i}{\def\pst@rot{}\old@psput@ii}}} + \def\old@psput@i[#1]{\pst@getangle{#1}\pst@rot\old@psput@ii} + \def\old@psput@ii{\@ifnextchar<{\old@psput@iii}{\old@psput@iv}} + \def\old@psput@iii<#1>{\pst@@getref\old@psput@iv[#1]} + \def\old@psput@iv{% + \@ifnextchar({\end@psput\rput@i}{\end@psput\rput@i(0,0)}} + \def\OldPsput{\let\psput\old@psput} + \def\NewPsput{\let\psput\rput} +\end{LVerbatim} +\endgroup + +\end{enumerate} + + +\subsection{New files with old stuff} + +Remember to input these files when needed. To have these files loaded +automatically, put an "\input" command after "\customization" in the +configuration file ("pstricks.con"). + +\begin{description} + +\item[pst-node] + All the node stuff has been put in "pst-node.tex" / "pst-node.sty". + +\item[pst-plot] + The plot commands ("\psplot", etc.) and the "\psaxes" command have been put +in "pst-plot.tex" / "pst-plot.sty". ("pst-plot.tex" automatically loads +"multido.tex", which is required by the axes macros.) There are also some +variants of "\listplot", "\fileplot" and "\dataplot", that are less likely to +exceed PostScript operand stack limits. + +\item[colortab] + The table coloring commands have been put in "colortab.tex" / +"colortab.sty". This is no longer PSTricks specific, but most of the old stuff +works the same as before. The only exception is that "\omit{}" is not needed +when a column is not to be colored. The documentation for "colortab.tex" is in +"colortab.doc". There are also some new features: +\begin{itemize} +\item + "\SP" and "\RP": These let "\LCC" ... "\ECC" work with nested arrays or +"\multicolumns" when using Mittelbach's array.sty. See "colortab.doc" for +details. + +\item + "LColors", "\LC", "\LCi", "\LCii", "\LCiii", "\LCz", for shading the cells +in the "longtable" environment. See "colortab.doc" for details. + +umns when using Mittelbach's array.sty. See "colortab.doc" for details. + +\item + "LColors", "\LC", "\LCi", "\LCii", "\LCiii", "\LCz", for shading the cells +in the "longtable" environment. See "colortab.doc" for details. +\end{itemize} + +\end{description} + +\subsection{Obsolete but retained features} + + The features listed below are obsolete and are documented in footnotes. + +\begin{itemize} +\item + "\Polar": Use "\SpecialCoor" and "(r;a)" instead. + +\item + "\Cartesian(x,y)" Use "\psset{xunit=x,yunit=y}" instead. + +\item + "\Rput": Use "\uput" instead. + +\item + "\Lput" and "\Mput": Use "\aput", "\bput", "\Aput" and "\Bput" instead. + +\end{itemize} + +\subsection{New features} + +This is a partial listing. See also the next section on new files. + +\begin{itemize} + +\item + "\uput": Replaces "\Rput". + +\item + "\aput", "\bput", "\Aput", "\Bput": Replace "\Lput" and "\Mput". + +\item + "\clipbox" has optional argument "[<dim>]" that sets the clippath distance +<dim> from box. E.g., "\clipbox[1pt]{foo}". + +\item + "\newpsstyle": E.g., +\begin{LVerbatim} + \newpsstyle{foo}{linewidth=5pt,linestyle=dashed} + \psline[style=foo](4,5) +\end{LVerbatim} + +\item + "\PSTricksOff" suppresses the PostScript. Useful for printing or previewing +drafts of your document with a non-PostScript driver. + +\item + New arrow styles: {\catcode`\<=12 \tt + >-<, <<->>, >>-<<. |*-|* }. + +\item + Many new features for the "\pscustom" command. + +\item + "dimen" parameter (for controlling whether dimensions for "\psframe", +"\pscircle", "\pswedge" and "\psellipse" refer to the inside, outside or +middle of the boundary. + +\item + "bordercolor" parameter. + +\item + "doubleline", "doublesep" and "doublecolor" parameters. + +\item + "ticks" and "labels" parameters, for suppressing ticks and labels with +"\psaxes". + +\item + "shadow" and "shadowangle" parameters. + +\item + Shadow parameters now apply to all graphics objects. + +\item + "\psmathboxtrue", "\psmathboxfalse", for controling whether box + macros preserve math mode. + +\item + "\pslongbox": For making box environment out of box commands. + +\item + "\psverbboxtrue", "\psverbboxfalse": For controlling whether verbatim + text is allowed in box commands. + +\end{itemize} + +\subsection{New files with new stuff} + +\begin{description} + +\item[pst-coil] + Contains "\pscoil", "\psCoil", "\pszigzag", "\nccoil" and "\nczigzag". Uses +"pst-coil.pro" (optionally). + +\item[pst2eps] + Contains "\TeXtoEPS", to make it easier to convert \TeX\ boxes to EPS files +with dvips, and "\PSTtoEPS", for creating EPS files directly from PSTricks +graphics. + +\item[textpath] + Contains "\pstextpath" command, for typesetting text along a path. Use +"textpath.pro". + +\item[gradient] + "gradient" fillstyle. Uses "gradient.pro". + +\item[charpath] + Contains "\pscharpath" command, for stroking and filling character paths. +Also, "\pscharclip" ... "\endpscharclip" sets clipping path as well. + +\item[piecharts.sh] + A sh/awk script by Denis Girou for converting data to PSTricks piecharts. + +\end{description} + +\subsection{Bug fixes} + +This list is incomplete. + +\begin{itemize} + +\item + "\scalebox" and "\scaleboxto" now work when the vertical scaling factor + is less than 1. + +\item + "\lput" and company now work with dvips 4.90 and later. + +\item + "\multips" can now be nested. + +\item + "\psclip" fixed. + +\item + "\clipbox" and clip option for "\pspicture" fixed. + +\end{itemize} + +\subsection{Other changes} + +In some cases, there is a small chance these will require that you modify old +files. + +\begin{itemize} + +\item + Specifying "\rput"'s <refpoint> argument as, e.g., "[.3,1]" rather than +"[br]" is now an undocumented feature. + +\item + All arguments to "\psplot", "\listplot" and "\parametric" plot are passed +on directly as PostScript. + +\item + Dictionaries when including raw PostScript have changed. See appendix of +User's Guide for details. + +\item + "\psset{unit=dim}" always changes "\psunit", "\psxunit" and "\psyunit". To +change only "\psunit", use "runit=dim". + +\item + "border" parameter affects closed curves. + +\item The "hatchsep" parameter now refers to the width of the space between +the lines, rather than the distance between the middle of the lines. +\end{itemize} + +\renewcommand{\EveryVerbatimLine}{} +\renewcommand{\VerbatimFont}{\small\tt} +\renewcommand{\VerbatimFuzz}{2cm} + +\section{VERSION 0.92} + +\subsection{Incompatible changes} + +\begin{Verbatim} + ! V0.91 had two curve interpolation algorithsm: \pscurve and \psdoodle + (and variants). These have been merged into a single algorithm retaining + the names \pscurve, etc. Now the three curvature parameter has three + numbers: + num1 num2 num3 + When num3 is 0 (the default), you get the old \psdoodle algorithm, and + and num1 and num2 act just like the old doodature parameter. When + num3=-1, you get the old \pscurve algorithm, but positive values are + usually nicer. + + If you have used \pscurve or its variants, the shape of the curves + will change under 0.92. If you have also used the curvature + parameter, you will get errors because the old curvature parameter is + a single number and the new curvature parameter consists of 3 numbers. + + If you have used \psdoodle or its variants, then you can either search + and replace doodle->curve and your use of doodature (which had 2 numbers) + to curvature (which has 3 number), or you can put the following in the + customization section of pstricks.con: + \let\psdoodle\pscurve + \let\psedoodle\psecurve + \let\pscdoodle\psccurve + \def\psset@doodature#1{\psset@curvature{#1 0}} + + ! In \psdblframebox: The inner frame now has \pslinewidth, and the outer + frame now has width (dblframewidth x \pslinewidth), where dblframewidth is + a new graphics parameter whose default value is 2. + + ! The angle, angleA and angleB parameters no longer apply to + \ncarc, and the default values have been changed to 0. For + \ncarc, the angle is now controlled by the arcangle, arcangleA + and arcangleB parameters. The default is still 8. + + ! \multido has been off-loaded to the file multido.tex. The syntax has + been changed to make it consistent with \psmultiput and LaTeX's + \multiput: The variable declarations are now the first argument + and the number of repetitions are now the second argument. Also, + for number variables, the initial value and increment must now + have the same number of digits to the right of the decimal, + unless the initial value is an integer. There is no * version. + Instead, the contents is never grouped, and there is even a variant + that doesn't group the whole macro. See multido.ps, which is distributed + with PSTricks, for details. + + ! 'diamond', 'diamond*', and 'x' dotstyles are gone. Use dotangle + parameter instead. +\end{Verbatim} + +\subsection{New features} + +\begin{Verbatim} + + New dot style: |. + + + New graphics objects: \pscustom. + + + New box framing macros: \psovalbox, \pscirclebox. + + + New box scaling macro: \scaleboxto. + + + New nodes: \ovalnode, \circlenode. + + + New node connection: \ncdiagg. + + + New loop macro: \multips. + + + New graphics parameters: dotscale, dotangle, dblframewidth. + + + New arrow styles: c and C. + + + \SpecialCoor allows using nodes as coordinates and mixing + coordinates. +\end{Verbatim} + +\subsection{Other changes} + +\begin{Verbatim} + * arrowscale parameter allows non-square scaling. + + * Documentation has been greatly improved. + + * A bug that caused problems with Arbortext's dvips (previously + listed in pstricks.bug) was fixed. + + * Memory stats with LaTeX's article style: + 43290 words of memory + 2895 multiletter control sequences +\end{Verbatim} + +\section{VERSION 0.91} + +\subsection{Incompatible changes} + +\begin{Verbatim} + ! \dbox and \rotate eliminated. + + ! \psput replaced by \rput, with new syntax: + OLD: \psput[angle]<ref point>(x,y){stuff} + NEW: \rput[ref point]{angle}(x,y){stuff} + \OldPsput sets up \psput with the old syntax (this may disappear some + day; keep it in a safe place if you expect to need it for a long time). + + ! System for specifying angles for nested rotations with \psput has changed. + OLD: p0{angle}, p1{angle}, p2{angle}, etc. + NEW: *angle works like p0{angle}; p1{angle} capability eliminated. + N, S, E and W have same meaning as before. + + ! enddotsize parameter changed to dotsize. + + ! For specifying the origin as the baseline for the \pspicture + environment, leave the optional argument [] empty (rather than + [o]). + + ! B is not allowed as the y-coordinate when setting the reference point + in \rput using coordinates. E.g., [Bl] and [B] are OK, but [.3,B] is + not. + +\end{Verbatim} + +\subsection{New features} + +\begin{Verbatim} + + cornersize parameter added, for specifying whether radius of corners + in \psframe and related box macros is given in relative terms (using + framearc) or absolute terms (using linearc). + + + \psclip and \clipbox macros added. + + + \Cartesian and \Polar commands added, for switching coordinate + systems. + + + border=dim parameter added, for giving appearance of one line + crossing over another. + + + showpoints=bool parameter added. If true, a dot is placed at appropriate + coordinates. + + + \psdots graphics object added. + + + \psarc graphics object added. + + + \parabola graphics object added. + + + \pscurve, \psccurve, \psecurve, \psdoodle, \psedoodle, and \pscdoodle + graphics objects added. + + + \qline and \qdisk graphics objects added. + + + \psplot, \parametericplot and \listplot graphics objects added. + + + node connection (e.g., tree) macros added!! +\end{Verbatim} + +\subsection{Other changes} + +\begin{Verbatim} + * \sunpatch not needed anymore. + + * PostScript header file (if being used) is included at the beginning, + rather than on demand. + + * In spite of the many new features, the input file is smaller in bytes, + and runs significantly faster (at least if used with a header file). + The macros use up slightly more words of memory, and significantly + more command sequences. Here are the stats with LaTeX's article + style: + 41586 words of memory + 2966 multiletter control sequences +\end{Verbatim} + +\section{VERSION 0.9} + +Much internal code was changed, and additional features were added. + +\end{document} +%% END changes.tex diff --git a/Master/texmf-dist/doc/generic/pstricks/examples/chartest.pdf b/Master/texmf-dist/doc/generic/pstricks/examples/chartest.pdf Binary files differnew file mode 100644 index 00000000000..d42fc926130 --- /dev/null +++ b/Master/texmf-dist/doc/generic/pstricks/examples/chartest.pdf diff --git a/Master/texmf-dist/doc/generic/pstricks/examples/chartest.tex b/Master/texmf-dist/doc/generic/pstricks/examples/chartest.tex new file mode 100644 index 00000000000..cf9a608161a --- /dev/null +++ b/Master/texmf-dist/doc/generic/pstricks/examples/chartest.tex @@ -0,0 +1,25 @@ +%% BEGIN chartest.tex +%% PSTricks test file for charpath.tex. +%% Run with Plain TeX. + +\input pstricks +\input pst-text + +% phvb should be name of Helvetica-Bold tfm or vf file: +\font\bighelv=phvb at 70pt +\bighelv + +\vskip 1in + +\pscharpath[linestyle=dotted]{Denis Girous} + +\vskip 1in + +\pscharpath[fillstyle=crosshatch]{Denis Girous} + +\vskip 1in + +\pscharpath[fillstyle=solid,fillcolor=red]{Denis Girous} + +\bye +%% END chartest.tex diff --git a/Master/texmf-dist/doc/generic/pstricks/examples/denis1.pdf b/Master/texmf-dist/doc/generic/pstricks/examples/denis1.pdf Binary files differnew file mode 100644 index 00000000000..c356d7af123 --- /dev/null +++ b/Master/texmf-dist/doc/generic/pstricks/examples/denis1.pdf diff --git a/Master/texmf-dist/doc/generic/pstricks/examples/denis1.tex b/Master/texmf-dist/doc/generic/pstricks/examples/denis1.tex new file mode 100644 index 00000000000..2818fcb74f0 --- /dev/null +++ b/Master/texmf-dist/doc/generic/pstricks/examples/denis1.tex @@ -0,0 +1,41 @@ +%% BEGIN denis1.tex +% PSTricks sample that combines +% \pscharpath, \pstextpath, and gradient fillstyle. + +% Run with Plain TeX. + +% Takes a long time to print. + +\hsize 9in +\vsize 6.5in +\special{landscape} % works with Rokicki's dvips. + +\input pstricks +\input pst-text +\input pst-grad + +% phvb should be name of Helvetica-Bold tfm or vf file: +\font\bighelv=phvb at 5in +\font\smallhelv=ptmr at 8pt + +\newcount\mycount +\parindent 0pt + +\null +\vfill + +\pstextpath(0,-8pt)% + {\pscharpath*[linestyle=none,fillstyle=gradient, + gradangle=45,gradmidpoint=.5]{\bighelv D G}}% + {\smallhelv + \mycount=70 + \loop + \advance\mycount -1 + \ifnum\mycount>0 + Denis Girou + \repeat} + +\vfill + +\bye +%% END denis1.tex diff --git a/Master/texmf-dist/doc/generic/pstricks/examples/denis2.pdf b/Master/texmf-dist/doc/generic/pstricks/examples/denis2.pdf Binary files differnew file mode 100644 index 00000000000..b24a0dcde42 --- /dev/null +++ b/Master/texmf-dist/doc/generic/pstricks/examples/denis2.pdf diff --git a/Master/texmf-dist/doc/generic/pstricks/examples/denis2.tex b/Master/texmf-dist/doc/generic/pstricks/examples/denis2.tex new file mode 100644 index 00000000000..0c5a4f3a4ba --- /dev/null +++ b/Master/texmf-dist/doc/generic/pstricks/examples/denis2.tex @@ -0,0 +1,36 @@ +%% BEGIN denis2.tex +% PSTricks sample that combines +% \pscharpath and \psclip. + +% Run with Plain TeX. + +\hsize 9in +\vsize 6.5in +\special{landscape} % works with Rokicki's dvips. + +\input pstricks +\input pst-text + +% phvb should be name of Helvetica-Bold tfm or vf file: +\font\bighelv=phvb at 5.5in +\font\smallrm=ptmr at 10pt + +\newcount\mycount +\parindent 0pt + +\vglue 1in + +\pscharclip[linewidth=2pt]{\rput[tl](0,0){\bighelv DG}} + \rput[t]{45}(0,0){\vbox{% + \hsize 12in + \smallrm + \mycount=1000 + \loop + \advance\mycount -1 + \ifnum\mycount>0 + Denis Girou + \repeat}} +\endpscharclip + +\bye +%% END denis2.tex diff --git a/Master/texmf-dist/doc/generic/pstricks/examples/filetest.dat b/Master/texmf-dist/doc/generic/pstricks/examples/filetest.dat new file mode 100644 index 00000000000..68945e6e95e --- /dev/null +++ b/Master/texmf-dist/doc/generic/pstricks/examples/filetest.dat @@ -0,0 +1,71 @@ +%% BEGIN filetest.dat +[ +{{0, 0}, {0.1, 0.489217}, {0.2, 0.914933}, + + {0.3, 1.21952}, {0.4, 1.35655}, {0.5, 1.29517}, + + {0.6, 1.02301}, {0.7, 0.547479}, {0.8, -0.104732}, + + {0.9, -0.889868}, {1., -1.75088}, {1.1, -2.62238}, + + {1.2, -3.4364}, {1.3, -4.12831}, {1.4, -4.64256}, + + {1.5, -4.93756}, {1.6, -4.98935}, {1.7, -4.7937}, + + {1.8, -4.36653}, {1.9, -3.74246}, {2., -2.97178}, + + {2.1, -2.11599}, {2.2, -1.24239}, {2.3, -0.418164}, + + {2.4, 0.295512}, {2.5, 0.84882}, {2.6, 1.2076}, + + {2.7, 1.35627}, {2.8, 1.29903}, {2.9, 1.0593}, + + {3., 0.677496}, {3.1, 0.207184}, {3.2, -0.289882}, + + {3.3, -0.749475}, {3.4, -1.11083}, {3.5, -1.32228}, + + {3.6, -1.34604}, {3.7, -1.16179}, {3.8, -0.768677}, + + {3.9, -0.185544}, {4., 0.550574}, {4.1, 1.38761}, + + {4.2, 2.263}, {4.3, 3.1091}, {4.4, 3.85919}, + + {4.5, 4.45329}, {4.6, 4.84347}, {4.7, 4.99808}, + + {4.8, 4.90456}, {4.9, 4.5705}, {5., 4.02303}, + + {5.1, 3.30639}, {5.2, 2.47802}, {5.3, 1.60352}, + + {5.4, 0.750856}, {5.5, -0.0156125}, {5.6, -0.640751}, + + {5.7, -1.08345}, {5.8, -1.32014}, {5.9, -1.34676}, + + {6., -1.17893}, {6.1, -0.850365}, {6.2, -0.409711}, + + {6.3, 0.084022}, {6.4, 0.566914}, {6.5, 0.97605}, + + {6.6, 1.25533}, {6.7, 1.36069}, {6.8, 1.2642}, + + {6.9, 0.956782}, {7., 0.449173}, {7.1, -0.228866}, + + {7.2, -1.03104}, {7.3, -1.89854}, {7.4, -2.76511}, + + {7.5, -3.56294}, {7.6, -4.22854}, {7.7, -4.70839}, + + {7.8, -4.96365}, {7.9, -4.97357}, {8., -4.73734}, + + {8.1, -4.27417}, {8.2, -3.62157}, {8.3, -2.83204}, + + {8.4, -1.96848}, {8.5, -1.09857}, {8.6, -0.288905}, + + {8.7, 0.400909}, {8.8, 0.92342}, {8.9, 1.24743}, + + {9., 1.36064}, {9.1, 1.27057}, {9.2, 1.00372}, + + {9.3, 0.602995}, {9.4, 0.123725}, {9.5, -0.371511}, + + {9.6, -0.818656}, {9.7, -1.1581}, {9.8, -1.34019}, + + {9.9, -1.32988}, {10., -1.11003}} +] +%% END filetest.dat diff --git a/Master/texmf-dist/doc/generic/pstricks/examples/filetest.pdf b/Master/texmf-dist/doc/generic/pstricks/examples/filetest.pdf Binary files differnew file mode 100644 index 00000000000..dac3755ff38 --- /dev/null +++ b/Master/texmf-dist/doc/generic/pstricks/examples/filetest.pdf diff --git a/Master/texmf-dist/doc/generic/pstricks/examples/filetest.raw b/Master/texmf-dist/doc/generic/pstricks/examples/filetest.raw new file mode 100644 index 00000000000..69a459f7e7d --- /dev/null +++ b/Master/texmf-dist/doc/generic/pstricks/examples/filetest.raw @@ -0,0 +1,6 @@ +%% BEGIN filetest.raw +% test of \rawfile, with testfile.tex +0 0 moveto +100 100 lineto +100 0 lineto +%% END filetest.raw diff --git a/Master/texmf-dist/doc/generic/pstricks/examples/filetest.tex b/Master/texmf-dist/doc/generic/pstricks/examples/filetest.tex new file mode 100644 index 00000000000..52ac7732d2b --- /dev/null +++ b/Master/texmf-dist/doc/generic/pstricks/examples/filetest.tex @@ -0,0 +1,84 @@ +%% BEGIN filetest.tex +% +% This is test file for some of the PSTricks commands that +% read from and write to files. +% +% Run with plain tex. +% +% You must have the epsf.tex macros, which are distributed with +% Rokicki's dvips, and change the reference to \epsf below. +% +% This inputs filetest.raw, filetest.dat and filetest.eps. +% It also write filetest.eps. +% +% If using Rokicki's dvips v5.47 or later, try +% +% dvips filetest -E-o +% +% to create an eps file filetest.ps from the whole picture. + +\input pstricks +\input pst-eps +\input pst-plot +\input epsf + +\TeXtoEPS % Make an EPS picture out of .dvi file, with dvips -E. + \pspicture(-5,-10)(10,10) + + % Test two similar ways to use data from a file: + % \fileplot + \AltClipMode + \psclip{\psframe[linestyle=none](0,-10)(10,10)} + \pscustom{% + \fileplot{filetest.dat} + \gsave + \lineto(100,100) + \lineto(0,100) + \closedshadow + \grestore} + \endpsclip + + \psaxes(0,0)(-5,-10)(10,10) + + % And \readdata and \dataplot: + \readdata\mydata{filetest.dat} + \dataplot[plotstyle=dots,swapaxes=true]{\mydata} + + % Save some data: + + \savedata{\total}[ + {{0,163},{1,187},{2,166},{3,232},{4,237},{5,201},{6,196},{7,203}}] + \savedata{\general}[ + {7,193}{6,182}{5,167}{4,153}{3,129}{2,108}{1,101}{0,104}] + + % Now make an EPS file from the graphics objects: + \PSTtoEPS[bbury=5cm,bburx=10.5cm, + bblly=2cm,bbllx=0cm,makeeps=all]{filetest.eps}{% + + % Now when I concatenate \total and \general, I get the points that + % delineate the boundary for the area you want to fill. + + \psyunit=.02cm + \psxunit=1.5cm + + \pscustom[plotstyle=curve,linestyle=none,fillstyle=solid, + fillcolor=gray]{\listplot{\general}\listplot[liftpen=1]{\total}} + \psset{plotstyle=curve,showpoints=true,dotscale=1.5} + \listplot[dotstyle=pentagon*]{\total} + \listplot[dotstyle=triangle]{\general} + } % end \PSTtoEPS + + % Now use the EPS file just created: + \rput[bl](-1,-10){\psdblframebox{\epsffile{filetest.eps}}} + + % Now try inputting raw ps code with \pscustom: + \pscustom[shadowsize=5pt,origin={5,4}]{% + \file{filetest.raw} + \closepath + \closedshadow} + + \endpspicture +\endTeXtoEPS + +\bye +%% END filetest.tex diff --git a/Master/texmf-dist/doc/generic/pstricks/examples/pst-test.pdf b/Master/texmf-dist/doc/generic/pstricks/examples/pst-test.pdf Binary files differnew file mode 100644 index 00000000000..947988f698c --- /dev/null +++ b/Master/texmf-dist/doc/generic/pstricks/examples/pst-test.pdf diff --git a/Master/texmf-dist/doc/generic/pstricks/examples/pst-test.tex b/Master/texmf-dist/doc/generic/pstricks/examples/pst-test.tex new file mode 100644 index 00000000000..890af15b8fc --- /dev/null +++ b/Master/texmf-dist/doc/generic/pstricks/examples/pst-test.tex @@ -0,0 +1,126 @@ +%%%%%%%%%%%%%%%%%%% pst-test.tex %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% Test file for pstricks.tex, v0.93 and maybe later versions. +%% +%% Run with Plain TeX. +%% +%% PAGE 1: Pure graphics objects. These us \pstunit and \pstverb. +%% +\input pstricks +\input pst-node + +\newpsobject{mygrid}{psgrid}{subgriddiv=1,griddots=10,gridlabels=7pt} +\hbox{}\vfill + +\pspicture(-1,-1)(9,2)\mygrid +\psline[linewidth=1.5pt,linestyle=dotted]{**-)}(2.5,1.5) +\psline[linewidth=2pt,linestyle=dashed, + linearc=.5,linecolor=gray]{|->}(3,-.5)(5.5,1.8)(7,-1) +\qline(9,-1)(8,2) +\endpspicture + +\vfill + +\pspicture(-1,-1)(9,2)\mygrid +\qdisk(0,0){1} +\pswedge[linecolor=gray,fillstyle=solid]{.8}{0}{70} +\pscircle[linewidth=2pt,linestyle=dashed](4,.5){1.5} +\psellipse[fillstyle=crosshatch*,fillcolor=lightgray] + (7.5,.5)(1,1.5) +\endpspicture + +\vfill + +\pspicture(-1,-1)(9,3)\mygrid +\parabola*(0,0)(1,3) +\parabola[xunit=.01]{<->}(900,3)(600,-1) +\endpspicture + +\vfill + +\eject + +%% PAGE 2: Color (using \pstVerb) and rotation (using \pstVerb and \pstrotate). + +\hbox{}\vfill + +Here is {\gray some gray text } + +\vskip 1cm +Here is a lightgray line:{\lightgray \hrulefill} + +\vskip 1cm +And a dark gray blob: + +{\darkgray \hrule height 1cm width 5 cm } +\vfill + +\centerline{ +\rotateleft{Left} \rotatedown{Down} \rotateright{Right} +\psscalebox{2}{Big} \psscalebox{1 -1}{Flip}} + +\vfill + +\rput[l]{-45}{This runs diagonally down and to the right} +\rput{45}(2in,0){This runs up to the right} + +\vfill + +\eject + +%% PAGE 3: Nodes and node connections. These use \pstVerb, \pstverbscale, +%% and maybe \pstrotate. + +\null +\vfill + +$$ +\matrix{% + &\rnode{a}{A}\cr + \noalign{\vskip 2cm}% + \rnode{b}{B}\qquad&\rnode{c}{C}\cr} +\psset{nodesep=3pt} +\everypsbox{\scriptstyle} +\ncline{->}{a}{b}\Bput{f} +\ncline{->}{a}{c}\Aput{g} +\ncline[linestyle=dotted]{->}{b}{c}\Aput{h} +$$ + +\vfill + +\vskip 2cm + +\cnode*(0,0){3pt}{A} +\cnode*(4,2){3pt}{B} +\ncline[nodesep=3pt]{A}{B} +\mput*{1} + +\vfill + +\pspicture(0.4,.2)(9.8,6.2) + \rput(2,6){\rnode{G}{\psframebox{GOAT}}} + \rput(2,.5){\rnode{I}{\psframebox{GOAT}}} + \ncangles[angleA=90, angleB=180, nodesepB=3pt, linearc=3pt, + armA=2cm]{<-**}{I}{G} + \lput*(2.5){Doom} + \aput(.5){Zoom} + \SpecialCoor + \rput{10}(7;30){\rnode{A}{\psframebox{Polar Coor}}} + \rput(5;10){\rnode{B}{\psframebox{Polar Coor}}}% + \ncline{->}{A}{B} + \mput{\pnode{Y}} + \cnodeput[linewidth=1.5pt](9.5,6){H}{H} + \cnodeput[linewidth=1.5pt](8,1){M}{M} + \newpsobject{myarc}{ncarc}{nodesep=3pt,offset=2pt,arrows=->} + \myarc{H}{M} + \mput*{r} + \myarc{M}{H} + \mput*{l} + \lput(.75){\pnode{Z}} + \nccurve[angle=135, ncurv=1.8]{Y}{Z} + \aput{:U}{Doom} +\endpspicture + +\vfill + +\bye +%% END pst-test.tex diff --git a/Master/texmf-dist/doc/generic/pstricks/examples/samples.pdf b/Master/texmf-dist/doc/generic/pstricks/examples/samples.pdf Binary files differnew file mode 100644 index 00000000000..18cf8a44824 --- /dev/null +++ b/Master/texmf-dist/doc/generic/pstricks/examples/samples.pdf diff --git a/Master/texmf-dist/doc/generic/pstricks/examples/samples.tex b/Master/texmf-dist/doc/generic/pstricks/examples/samples.tex new file mode 100644 index 00000000000..57b8ad0d8ac --- /dev/null +++ b/Master/texmf-dist/doc/generic/pstricks/examples/samples.tex @@ -0,0 +1,443 @@ +%% samples.pst : PSTricks samples. Run with LaTeX. +%% Last edited: 93/03/03 + +\documentclass[11pt,a4paper]{article} + +\makeatletter + +%% INPUT FANCYBOX.STY HERE TO CHECK FILE VERSION. + +\usepackage[T1]{fontenc} +\usepackage[dvips]{geometry} +\geometry{tmargin=2cm,bmargin=3.3cm,headheight=20pt,headsep=10pt, +textheight=9in, footskip=.625in} +\usepackage[scaled]{luximono} +\usepackage{mathpazo} +\usepackage{pstricks,pst-node,pst-coil,fancybox} + +\let\Ldots\ldots +\def\ldots{\mbox{$\Ldots$}} % In case we're using AmS-LaTeX. +\makeatletter +\def\ps@samples{% + \def\@oddhead{\bf PSTricks samples \hfill \thepage}% + \def\@oddfoot{}} +\makeatother +\pagestyle{samples} + +\newbox\sample + +\def\example{\setbox\sample\vbox\bgroup} +\def\endexample{% + \egroup + \vbox{\vskip 1cm + \hbox{\psframebox[boxsep=false,linewidth=2pt,linearc=.5cm,framesep=.5cm, + cornersize=absolute]{\box\sample}} + \vskip 1cm}} +\def\rquote#1{{\begin{quote}\vskip-\topsep + \raggedright\hskip -2em#1\end{quote}}} +\def\creator#1{\rquote{{\bf Creator:}\hskip 1em#1}} +\def\title#1{\rquote{{\bf Description:}\hskip 1em#1}} + +\def\N#1{{\tt\string#1}} + +\begin{document} + +\begin{example} + \creator{Gisli Ottarsson \tt <gisli@liapunov.eecs.umich.edu>} + \title{Calvin and Hobbes} + + $$ + \pspicture(-3.,29)(3.,38) + \def\anglei{5} + \def\angleii{-5} + \psset{linewidth=1pt,hatchwidth=0.8pt} + \def\tower#1{% + \psline[linewidth=2pt](0,0)(0,7) + \psset{fillstyle=solid,dimen=middle,linewidth=1.5pt} + \cnode(0,2){.5}{A#1} + \cnode(0,5){.8}{B#1} + \cnode(0,7){.5}{C#1} + \psset{linestyle=solid,linewidth=1pt} + \psline{->}(0,1)(2,1) + \SpecialCoor + \rput([angle=90]B#1){\psline{->}(2,0)} + \rput([angle=90]C#1){\psline{->}(2,0)}}% + \pscustom[linewidth=2pt]{% + \psarc(0,0){30}{80}{100} + \gsave + \psarcn(0,0){29.25}{100}{80} + \fill[fillstyle=vlines] + \grestore} + \rput{\anglei}{\rput(0,30){% + \psset{fillcolor=lightgray} + \tower{1}}} + \rput{\angleii}{\rput(0,30){% + \psset{linestyle=dashed} + \tower{2}}} + \psset{linewidth=1.5pt,coilwidth=.45} + \nczigzag{B1}{A2} + \aput[.25](.85){$k_{c_3}$} + \ncline[linecolor=white,linewidth=.6]{A1}{B2} + \nczigzag{A1}{B2} + \bput[.3](.85){$k_{c_3}$} + \nczigzag{A1}{A2} + \bput[.3](.5){$k_{c_1}$} + \nczigzag{B1}{B2} + \aput[.3](.5){$k_{c_2}$} + \endpspicture + $$ +\end{example} + +\begin{example} + \creator{\tt{leecheng@liapunov.eecs.umich.edu}} + \title{Dripping faucet model.} + + \psset{unit=.4cm} + \begin{center} + \begin{pspicture}(0,-2)(31,12) + \rput(1.5,0){% + \psellipse[linewidth=1pt](8,7)(1,3) + \psframe[linecolor=white,fillstyle=solid,fillcolor=white] + (6.4,6.5)(8,7.5) + \psline[linearc=.3,linewidth=1pt](8,8)(8,7.5)(4,7.5) + \psbezier[linewidth=1pt](4,7.5)(3,7.5)(3,6.5)(3,5.5) + \psline[linearc=.3,linewidth=1pt](8,6)(8,6.5)(5,6.5) + \psbezier[linewidth=1pt](5,6.5)(4,6.5)(4,6.5)(4,5.5) + \psline[linewidth=1pt](3,5.5)(4,5.5) + \psline[linearc=.3,linewidth=1pt](5,7.5)(5,8)(6,8)(6,7.5) + \psframe[linewidth=1pt](5.3,8)(5.7,8.7) + \psframe[linewidth=1pt,framearc=1,fillstyle=solid, + fillcolor=white](4,8.7)(7,9) + \multirput(3.5,4.8)(0,-1){4}{% + \psbezier[linewidth=.5pt](0,0)(.25,-.4)(-.25,-.4)(0,0)} + \rput[t](5.5,0){Dripping Faucet}} + \rput(20,5){% + \pspolygon[linecolor=white,fillstyle=vlines, + fillcolor=darkgray,hatchsep=.2](1,4.5)(1,4)(4,4)(4,4.5) + \psline[linewidth=2pt](1,4)(4,4) + \psline[linewidth=1.5pt](2.5,4)(2.5,3.5)(2.9,3.3)(2.1,2.9) + (2.9,2.5)(2.1,2.1)(2.9,1.7)(2.1,1.3)(2.5,1.1)(2.5,0.6) + \psframe[linecolor=black,linewidth=1.5pt,fillstyle=solid, + fillcolor=lightgray](1.8,-1)(3.2,.6) + \rput(2.5,-.2){$M$} + \psline{<->}(3.7,-.9)(3.7,.5) + \psframe[linecolor=black,linewidth=1.5pt,fillstyle=solid, + fillcolor=lightgray](1.8,-3.5)(3.2,-1.9) + \rput(2.5,-2.7){$m$} + \psline{->}(5,1)(5,-1) + \rput[l](5.5,0){$g$} + \psline{->}(3.7,-2)(3.7,-3.4) + \rput[t](2.5,-4){Mathematical Model for} + \rput[t](2.5,-5){a Dripping Faucet} + \rput(-6,-2){% + \psset{linewidth=2pt} + \psline(0,.5)(2,.5) + \psline(0,-.5)(2,-.5) + \psline(1.5,1)(2.5,0)(1.5,-1)}} + \psframe[linewidth=2pt,framearc=.05,linecolor=gray](0,-2.5)(31,12) + \end{pspicture} + \end{center} +\end{example} + +\begin{example} + \creator{\tt{Christian Schytt <pierre@diku.dk>}} + \title{Primal and dual.} + + \hbox to \hsize{% + % DUAL + \psset{linewidth=0.5pt} + \pspicture(-2,-1)(6,5) + \psline{->}(5,0)\psline{->}(0,4) + % + \qdisk(2,0){2pt} + \rput(2,0){\pnode{Z}} + \uput[dl](2,0){$c_{ij}$} + % + \uput[d](5,0){$p_i-p_j$} + \uput[r](0,4){\parbox{2cm}{Dual cost \\ of arc $(i,j)$}} + \uput[l](0,4){$q_{ij}(p_i-p_j)$} + % + \rput(.5,1.5){\pnode{U}} + \rput(2.5,-1.5){\pnode{V}} + \ncline{Z}{U}\mput{\pnode{X}} + \ncline{Z}{V}\mput{\pnode{Y}} + % + \rput[b](2,2){\rnode{A}{Slope: ${}-l_{ij}$}} + \ncline{->}{A}{X} + \rput[b](0,-0.75){\rnode{B}{Slope: ${}-u_{ij}$}} + \ncline{->}{B}{Y} + \endpspicture\hfill + % PRIMAL + \pspicture(0,-1)(6,5) + \psline{->}(5,0)\psline{->}(0,4) + \qdisk(1.5,0){2pt} + \qdisk(3.5,0){2pt} + \uput[d](1.5,0){$l_{ij}$} + \uput[d](3.5,0){$u_{ij}$} + \uput[d](5,0){$f_{ij}$} + \uput[r](0,4){\parbox{2cm}{\raggedright Primal cost \\ of arc $(i,j)$}} + % + \rput(1.5,1){\pnode{A}} + \rput(3.5,2){\pnode{B}} + \ncline{-}{A}{B}\mput{a\pnode{Y}} + % + \psline[linestyle=dashed]{-}(1.5,0)(1.5,3) + \psline[linestyle=dashed]{-}(3.5,0)(3.5,3) + % + \rput[l](4,1){\rnode{X}{Slope: $c_{ij}$}} + \ncline{->}{X}{Y} + \endpspicture + }\medskip +\end{example} + +\begin{example} + \creator{Gisli Ottarsson \tt <gisli@liapunov.eecs.umich.edu>} + + \begin{center} + \psset{unit=1in,linewidth=1pt,hatchwidth=0.8pt} + \pspicture(1,0)(5.,3) + \psline[linewidth=2pt,arrowscale=1.5]{->}(1.5,2.4)(3.5,2.4) + \psellipse[fillcolor=darkgray,fillstyle=solid](1.5,1.5)(.5,1.3) + \psellipse[fillcolor=white,fillstyle=solid](1.4,1.5)(.5,1.3) + \psline(1.5,2.8)(1.4,2.8) + \psline(1.5,0.2)(1.4,0.2) + \psline[linewidth=1.5pt,linestyle=dashed](1.3,2.4)(1.7,2.4) + \pscircle*(1.3,2.4){3pt} + \rput(1.3,2.2){$(r_o,\theta_o)$} + \rput(3.3,2.65){$u(r_o,\theta_o)$} + \psline[linewidth=2pt,arrowscale=1.5]{|->}(2.5,0.65)(4.5,0.65) + \rput(4.5,0.85){$w(x_o)$} + \psline{<->}(1.93,1.0)(2.5,.65) + \rput(2.2,.65){$x_o$} + \pscircle[fillcolor=lightgray,fillstyle=solid](1.93,1.2){0.05} + \pspolygon[fillcolor=lightgray,fillstyle=solid,linecolor=lightgray] + (1.935,1.24)(3.5,.38)(3.5,.22)(1.935,1.16) + \pscircle[fillcolor=lightgray,fillstyle=solid](2.53,0.855){0.058} + \pscircle[fillcolor=lightgray,fillstyle=solid,linecolor=lightgray] + (2.545,0.845){0.056} + \pscircle[fillcolor=gray,fillstyle=solid](3.5,.3){0.08} + \psline(1.93,1.245)(3.5,.38) + \psline(3.5,.22)(1.92,1.156) + \endpspicture + \end{center} +\end{example} + + +\begin{example} +\creator{tvz} +\title{Another example of \N\pspolygon. The coordinates where determined + using \N\psgrid, after making the table.\label{ex-pspolygon}} + +\begin{center} + \def\arraystretch{2}\tabcolsep=10pt\small\bf + {\em Result is true for values in shaded region:}\\[5pt] + \pspolygon[linearc=.4,fillcolor=lightgray,fillstyle=solid] + (3,2)(5.9,2)(5.9,0)(7.4,0)(7.4,-2)(1.45,-2)(1.45,0)(3,0) + \begin{tabular}{cccccc} + X11 & X12 & X13 & X14 & X15 & X16\\ + X21 & X22 & X23 & X24 & X25 & X26\\ + X31 & X32 & X33 & X34 & X35 & X36\\ + X41 & X42 & X43 & X44 & X45 & X46 +\end{tabular} +\end{center} + +\end{example} + + +\begin{example} + \creator{tvz} + \title{Nodes.\label{ex-nodes1}} + + \begin{center} + \begin{pspicture}(0,-1)(8,3) + \psset{arrows=->, nodesep=6pt} + \rput(3,3){\rnode{A}{Returns to Scale}} + \rput(1,1){\rnode{B}{Production}} + \rput(5,1){\rnode{C}{Managing}} + \rput(3,-1){\rnode{D}{Supervision}} + \rput(7,-1){\rnode{E}{Information Processing}} + \ncline{A}{B} \ncline{A}{C} \ncline{C}{D} \ncline{C}{E} + \end{pspicture} + \end{center} +\end{example} + + +\begin{example} + \creator{tvz} + \title{Another example of nodes.\label{ex-nodes3}} + + \begin{center} + \begin{pspicture}(0,-1)(7.5,1) + \pnode{a} + \cnodeput(1.5,0){b}{0} + \cnodeput(3,0){c}{1} + \cnodeput(4.5,0){d}{2} + \cnodeput(6,0){e}{3} + \scriptsize + \psset{arrows=->,nodesep=0} + \pslabelsep=3pt + \ncline{a}{b}\Aput{start} + \ncline{b}{c}\Bput{a} + \ncline{c}{d}\Aput{b} + \ncline{d}{e}\Aput{b} + \psset{arm=.6,linearc=.4,angleA=0,angleB=90} + \ncangles{b}{b}\Aput{b} + \ncangles{e}{b}\Aput{b} + \psset{angleB=-90} + \ncangles{c}{c}\Bput{a} + \ncangles{d}{c}\Bput{a} + \ncangles{e}{c}\Bput{a} + \end{pspicture} + \end{center} +\end{example} + +\begin{example} + \creator{tvz} + \title{Nonsense examples of nodes.\label{ex-nodes4}} + + The tempestuous \rnode{E}{Maggie} and her alcoholic husband + \rnode{A}{Brick} \ldots + \vskip 2cm + \cnode*{3pt}{D}\hskip 1em Much Ado about \rnode{B}{Nothing}. + \vskip 1in + and \rnode{J}{\psframebox{another}} another + \rnode{K}{\psframebox{another}} another another \rnode{C}{book} + \ncline[linecolor=darkgray,linewidth=1.5pt,nodesep=3pt]{->}{A}{B} + \ncline[nodesep=3pt,linestyle=dashed,border=3pt]{->}{C}{E} + \ncangle[nodesep=1pt,angleA=-90,angleB=150, armB=3cm]{D}{C} + \ncbar[angle=90]{<-oo}{J}{K} +\end{example} + + +\begin{example} + \creator{tvz} + \title{More node nonsense.\label{ex-nodes5}} + + \begin{center} + \begin{pspicture}(0.4,.2)(9.8,6.2) + \rput(2,6){\rnode{G}{\psframebox{GOAT}}} + \rput(2,.5){\rnode{I}{\psframebox{GOAT}}} + \ncangles[angleA=90, angleB=180, nodesepB=3pt, linearc=3pt, + armA=2cm]{<-**}{I}{G} + \lput*(2.5){Doom} + \bput(.5){Zoom} + \SpecialCoor + \rput{10}(7;30){\rnode{A}{\psframebox{Polar Coor}}} + \rput(5;10){\rnode{B}{\psframebox{Polar Coor}}} + \ncline{->}{A}{B} + \mput{\pnode{Y}} + \cnodeput[linewidth=1.5pt](9.5,6){H}{H} + \cnodeput[linewidth=1.5pt](8,1){M}{M} + \newpsobject{myarc}{ncarc}{nodesep=3pt,offset=2pt,arrows=->} + \myarc{H}{M}\mput*{r} + \myarc{M}{H}\mput*{l}\lput(.75){\pnode{Z}} + \nccurve[angleA=135, angleB=135, ncurv=1.8]{Z}{Y}\bput{:D}{Doom} + \end{pspicture} + \end{center} +\end{example} + +\begin{example} + \creator{tvz} + \title{} + + \[ + \def\arraystretch{3.5} + \arraycolsep .7cm + \begin{array}{ccc} + \rnode{a}{U}\\ + & \rnode{b}{X\times_Z Y} & \rnode{c}{X}\\ + & \rnode{d}{Y} & \rnode{e}{Z} + \end{array} + \psset{arrows=->,nodesep=3pt} + \pslabelsep 3pt + \everypsbox{\scriptstyle} + \ncLine{a}{b}\Bput{y} + \ncLine{a}{c}\Aput{x} + \ncLine{b}{d}\Bput{q} + \ncLine{b}{c}\Bput{p} + \ncLine{c}{e}\Aput{f} + \ncLine{d}{e}\Bput{g} + \] +\end{example} + +\begin{example} + \creator{tvz} + \title{Several ways to connect nodes to themselves} + + \def\arrow(#1,#2){\ncline{->}{#1}{#2}} + $$ + \begin{array}{c@{\hskip 1.5cm}c@{\hskip 1.5cm}c} + \rnode{a}{\bullet} & \rnode{b}{\bullet} & \rnode{c}{\bullet}\\[1cm] + \end{array} + \everypsbox{\scriptstyle} + \psset{nodesep=5pt,arm=.6,linearc=.4,angleA=0,angleB=90} + \ncangles{->}{a}{a} + \ncangles{->}{b}{b} + \ncangles{->}{c}{c} + \arrow(a,b) + \arrow(b,c) + \ncarc[arcangleA=-30, arcangleB=-30]{->}{a}{c} + $$ + $$ + \everypsbox{\scriptstyle} + \def\cn#1#2{% + \cnode*{2pt}{#1} + \ncloop[arm=.4,linearc=.39,loopsize=.8,nodesep=5pt,angleB=180] + {->}{#1}{#1} + \Bput{#2}} + \begin{array}{c@{\hskip 1.5cm}c@{\hskip 1.5cm}c} + \cn{a}{1} & \cn{b}{2} & \cn{c}{3}\\[1cm] + \end{array} + \psset{nodesep=5pt,arm=.6,linearc=.4}\arrow(a,b) + \arrow(b,c) + \ncarc[arcangleA=-30, arcangleB=-30]{->}{a}{c} + $$ + $$ + \everypsbox{\scriptstyle} + \def\cn#1#2{% + \cnode*{2pt}{#1} + \nccircle[nodesep=5pt]{->}{#1}{.5} + \Bput{#2}} + \begin{array}{c@{\hskip 1.5cm}c@{\hskip 1.5cm}c} + \cn{a}{1} & \cn{b}{2} & \cn{c}{3}\\[1cm] + \end{array} + \psset{nodesep=5pt,arm=.6,linearc=.4}\arrow(a,b) + \arrow(b,c) + \ncarc[arcangleA=-30, arcangleB=-30]{->}{a}{c} + $$ +\end{example} + +\begin{example} + \creator{tvz} + \title{} + +\centerline{% + \rnode{a}{\psframebox{\Huge A connection}}% + \hskip 1.6cm + \rnode{b}{\psframebox{\Huge Unto another}}} +\ncloop[loopsize=-1cm,arm=.8cm,linearc=.3]{->}{a}{b} +\end{example} + + +\begin{example} + \creator{tvz} + \title{} + + \newbox\mybox + \setbox\mybox=\hbox{% + \psset{unit=4pt} + \pspicture(-2.8,0)(2.8,7.75) + \psset{linewidth=.1} + \psline(-.3,0)(-.3,3) + \psline(.3,0)(.3,3) + \psline(-2,0)(2,0) + \rput{45}(0,2){% + \psframe[framearc=.1,fillstyle=solid](0,0)(4,4) + \psline[linewidth=.4,linearc=.2](1.5,.4)(.4,2.5)(3.6,1.5)(2.5,3.6)} + \psdots[dotstyle=square,dotsize=.4 0](0,7.5) + \endpspicture}% + \centerline{\copy\mybox\hskip 1pt\copy\mybox} +\end{example} + +\end{document} + diff --git a/Master/texmf-dist/doc/generic/pstricks/examples/tp-test.pdf b/Master/texmf-dist/doc/generic/pstricks/examples/tp-test.pdf Binary files differnew file mode 100644 index 00000000000..2e2db9df0e5 --- /dev/null +++ b/Master/texmf-dist/doc/generic/pstricks/examples/tp-test.pdf diff --git a/Master/texmf-dist/doc/generic/pstricks/examples/tp-test.tex b/Master/texmf-dist/doc/generic/pstricks/examples/tp-test.tex new file mode 100644 index 00000000000..355851eee33 --- /dev/null +++ b/Master/texmf-dist/doc/generic/pstricks/examples/tp-test.tex @@ -0,0 +1,72 @@ +%% BEGIN tp-test.tex +%% +%% LaTeX test file for textpath.tex/textpath.sty. +%% +%% To use PostScript fonts with the New Font Selection Scheme: +%% - Include the style option "npsfont". +%% - You may have to change the font file names given below. +%% - "npsfont.sty" is distributed with PSTricks. + +\documentclass[11pt,a4paper]{article} + +\makeatletter + +%% INPUT FANCYBOX.STY HERE TO CHECK FILE VERSION. + +\usepackage{fancybox} +\usepackage[T1]{fontenc} +\usepackage[dvips]{geometry} +\geometry{tmargin=2cm,bmargin=3.3cm,headheight=20pt,headsep=10pt, +textheight=9in, footskip=.625in} +\usepackage[scaled]{luximono} +\usepackage{mathptmx} +\usepackage{pstricks,pst-text} + +\begin{document} +The first sample shows that math works. I let the line be drawn to make the sample clearer. +\begin{verbatim} + \large + \pstextpath[c]% + {\pscurve[linecolor=gray](0,1)(4,3)(6,2)(9,0)(12,1)(15,1)}% + {$S_\alpha=\Omega(\gamma_\beta)$ is a connected snarf and + $B=(\otimes,\rightarrow,\theta)$ is Boolean left subideal.} +\end{verbatim} + +\vskip 3.5cm + +\begin{large} + \pstextpath[c]% + {\pscurve[linecolor=gray](0,1)(4,3)(6,2)(9,0)(12,1)(15,1)}% + {$S_\alpha=\Omega(\gamma_\beta)$ is a connected snarf and + $B=(\otimes,\rightarrow,\theta)$ is Boolean left subideal.} +\end{large} + +\vskip 1cm + +\begin{verbatim} + \psset{linestyle=none} + \pstextpath[c]{\psarcn(0,0){73pt}{180}{0}}% + {Centre National de la} + \pstextpath[c]{\psarc(0,0){73pt}{180}{0}}% + {Recherche Scientifique} +\end{verbatim} + +\begin{center} + \vskip 2cm + \Huge + \psset{linestyle=none} + \pstextpath[c]{\psarcn(0,0){73pt}{180}{0}}% + {Centre National de la} + \pstextpath[c]{\psarc(0,0){73pt}{180}{0}}% + {Recherche Scientifique} + \vskip 2cm +\end{center} + +\begin{center} + \pstextpath[c](0,0){\psarcn[linestyle=none](0,-6){4}{180}{0}}% + {\parbox{3.5in}{In principle, it is possible to use + parbox, but let's see what really happens. It seems + hard to believe that someone would want to do this.}} +\end{center} +\end{document} +%% END tp-test.tex diff --git a/Master/texmf-dist/doc/generic/pstricks/psd-3d.tex b/Master/texmf-dist/doc/generic/pstricks/psd-3d.tex deleted file mode 100644 index 9837db6e91f..00000000000 --- a/Master/texmf-dist/doc/generic/pstricks/psd-3d.tex +++ /dev/null @@ -1,12 +0,0 @@ -%% BEGIN psd-3d.tex - -\part{Three Dimensional Graphics\label{P-threeD}} - -\Section{Overview} - -\File{pst-3d} -The... - -\endinput - -%% END psd-3d.tex diff --git a/Master/texmf-dist/doc/generic/pstricks/psd-basi.tex b/Master/texmf-dist/doc/generic/pstricks/psd-basi.tex deleted file mode 100644 index 0d9f5ccea8b..00000000000 --- a/Master/texmf-dist/doc/generic/pstricks/psd-basi.tex +++ /dev/null @@ -1,648 +0,0 @@ -%% BEGIN psd-basi.tex - -\part{Basic graphics objects\label{P-graphics}} - -\Section{Lines and polygons\label{S-lines}} - -The objects in this section also use the following parameters: -\begin{description} - \pitem[linearc=dim] The radius of arcs drawn at the corners of lines by the - \n\psline{} and \n\pspolygon{} graphics objects. <dim> should be positive. - \pitem[framearc=num] In the \n\psframe{} and the related box framing macros, - the radius of rounded corners is set, by default, to one-half <num> times - the width or height of the frame, whichever is less. <num> should be between - 0 and 1. - \pitem[cornersize=relative/absolute] If \p{cornersize} is "relative", then - the \p{framearc} parameter determines the radius of the rounded corners for - \n\psframe, as described above (and hence the radius depends on the size of - the frame). If \p{cornersize} is "absolute", then the \p{linearc} parameter - determines the radius of the rounded corners for \n\psframe{} (and hence the - radius is of constant size). -\end{description} - - -Now here are the lines and polygons: -\begin{description} - -\oitem \psline`{arrows}(\x0,\y0)'(\x1,\y1)`\ldots(\x n,\y n)' - - This draws a line through the list of coordinates. For example: -\begin{MEx*}(4,2) - \psline[linewidth=2pt,linearc=.25]{->}(4,2)(0,1)(2,0) -\end{MEx*} - -\mitem \qline(coor0)(coor1) - - This is a streamlined version of \n\psline{} that does not pay attention to -the \p{arrows} parameter, and that can only draw a single line segment. Note -that both coordinates are obligatory, and there is no optional argument for -setting parameters (use \n\psset{} if you need to change the \p{linewidth}, or -whatever). For example: -\begin{MEx*}(2,1) - \qline(0,0)(2,1) -\end{MEx*} - -\oitem \pspolygon`(\x0,\y0)'(\x1,\y1)(\x2,\y2)`\ldots(\x n,\y n)' - - This is similar to \n\psline, but it draws a closed path. For example: -\begin{MEx*}(4,2) - \pspolygon[linewidth=1.5pt](0,2)(1,2) - \pspolygon*[linearc=.2,linecolor=darkgray](1,0)(1,2)(4,0)(4,2) -\end{MEx*} - -\oitem \psframe`(\x0,\y0)'(\x1,\y1) - - \n\psframe{} draws a rectangle with opposing corners \c0 and \c1. For -example: -\begin{MEx*}(4,2) - \psframe[linewidth=2pt,framearc=.3,fillstyle=solid, - fillcolor=lightgray](4,2) - \psframe*[linecolor=white](1,.5)(2,1.5) -\end{MEx*} - -\oitem \psdiamond`\c0'\c1 - - \n\psdiamond{} draws a diamond centered at \c0, and with the half width and -height equal to \x1\ and \y1, respectively. -\begin{MEx*}(4,2) - \psdiamond[framearc=.3,fillstyle=solid, - fillcolor=lightgray](2,1)(1.5,1) -\end{MEx*} - -The diamond is rotated about the center by -\begin{Ex} - \Par{gangle=gangle} -\end{Ex} - -\oitem \pstriangle`\c0'\c1 - - \n\pstriangle{} draws an isosceles triangle with the base centered at \c0, -and with width (base) and height equal to \x1{} and \y1, respectively. -\begin{MEx*}(4,2) - \pstriangle*[gangle=10](2,.5)(4,1) -\end{MEx*} - -\end{description} - -\Section{Arcs, circles and ellipses} - -\begin{description} - -\oitem \pscircle`(\x0,\y0)'{radius} - -This draws a circle whose center is at \c0 and that has radius <radius>. For -example: -\begin{MEx*}[-1,-1](2,2) - \pscircle[linewidth=2pt](.5,.5){1.5} -\end{MEx*} - -\mitem \qdisk(coor){radius} - - This is a streamlined version of \n{\pscircle*}. Note that the two arguments -are obligatory and there is no parameters arguments. To change the color of -the disks, you have to use \n\psset: -\begin{MEx}[1.9,2.9](2.1,3.1) - \psset{linecolor=gray} - \qdisk(2,3){4pt} -\end{MEx} - -\oitem \pswedge`(\x0,\y0)'{radius}{angle1}{angle2} - - This draws a wedge whose center is at \c0, that has radius <radius>, and -that extends counterclockwise from <angle1> to <angle2>. The angles must be -specified in degrees. For example: -\begin{MEx*}(2,2) - \pswedge[linecolor=gray,linewidth=2pt,fillstyle=solid]{2}{0}{70} -\end{MEx*} - -\oitem \psellipse`(\x0,\y0)'(\x1,\y1) - -\c0 is the center of the ellipse, and \x1 and \y1 are the horizontal and -vertical radii, respectively. For example: -% D.G. modification begin - Mar. 3, 2003 -%\begin{MEx*}[-1,-1.5](2,1) -% D.G. modification end -\begin{MEx*}[-1,-1](2,1) - \psellipse[fillcolor=lightgray](.5,0)(1.5,1) -\end{MEx*} - -\oitem \psarc`{arrows}\c~'{radius}{angleA}{angleB} - - This draws an arc from <angleA> to <angleB>, going counter clockwise, for a -circle of radius <radius> and centered at \c{}. You must include either the -{arrows} argument or the \c{} argument. For example: -\begin{MEx*}(3,2) - \psarc*[showpoints=true](1.5,1.5){1.5}{215}{0} -\end{MEx*} -See how \p{showpoints=true} draws a dashed line from the center to the arc; -this is useful when composing pictures. - -\n\psarc{} also uses the parameters: -\begin{description} - -\pitem[arcsepA=dim](0pt) - - <angleA> is adjusted so that the arc would just touch a line of width <dim> -that extended from the center of the arc in the direction of <angleA>. - -\pitem[arcsepB=dim](0pt) This is like \p{arcsepA}, but <angleB> is adjusted. - -\pitem[arcsep=dim] This just sets both \p{arcsepA} and \p{arcsepB}. -\end{description} -These parameters make it easy to draw two intersecting lines and then use -\n\psarc{} with arrows to indicate the angle between them. For example: -\begin{MEx*}(4,3) - \SpecialCoor - \psline[linewidth=2pt](4;50)(0,0)(4;10) - \psarc[arcsepB=2pt]{->}{3}{10}{50} -\end{MEx*} - -\oitem \psarcn`{arrows}\c~'{radius}{angleA}{angleB} - - This is like \n\psarc, but the arc is drawn \emph{clockwise}. You can achieve -the same effect using \n\psarc{} by switching <angleA> and <angleB> and the -arrows.\footnote{% -However, with \n\pscustom{} graphics object, described in Part \ref{P-custom}, -\n\psarcn{} is not redundant.} - -\oitem \psellipticarc`{arrows}(\x0,\y0)'(\x1,\y1){angleA}{angleB} - - This draws an elliptic from <angleA> to <angleB>, going counter clockwise, -with \c0 the center of the ellipse and \x1 and \y1 the horizontal and -vertical radii, respectively. For example: -\begin{MEx*}[-1,-1](2,1) - \psellipticarc[showpoints=true,arrowscale=2]{->}(.5,0)(1.5,1){215}{0} -\end{MEx*} -See how \p{showpoints=true} draws a dashed line from the center to the arc; -this is useful when composing pictures. - -Like \n\psarc, \n\psellipticarc{} use the \p{arcsep}/\p{arcsepA}/\p{arcsepB} -parameters. - -Unlike \n\psarc, \n\psellipticarc use the -\p{dimen}=\p{inner}/\p{middle}/\p{outer} parameter. - -\oitem \psellipticarcn`{arrows}(\x0,\y0)'(\x1,\y1){angleA}{angleB} - - This is like \n\psellipticarc, but the arc is drawn \emph{clockwise}. You can -achieve the same effect using \n\psellipticarc{} by switching <angleA> and -<angleB> and the arrows.\footnote{% -However, with \n\pscustom{} graphics object, described in Part \ref{P-custom}, -\n\psellipticarcn{} is not redundant.} - -\end{description} - - -\Section{Curves} - -\begin{description} - -\oitem \psbezier`{arrows}(\x0,\y0)'(\x1,\y1)(\x2,\y2)(\x3,\y3) - - \n\psbezier{} draws a bezier curve with the four control points. The curve -starts at the first coordinate, tangent to the line connecting to the second -coordinate. It ends at the last coordinate, tangent to the line connecting to -the third coordinate. The second and third coordinates, in addition to -determining the tangency of the curve at the endpoints, also ``pull'' the -curve towards themselves. For example: -\begin{MEx}(4,4) - \psbezier[linewidth=2pt,showpoints=true]{->}(0,0)(1,4)(2,1)(4,3.5) -\end{MEx} -\p{showpoints=true} puts dots in all the control points, and connects them by -dashed lines, which is useful when adjusting your bezier curve. - -\oitem \parabola`{arrows}'\c0\c1 - - Starting at \c0, \n\parabola{} draws the parabola that passes through \c0 and -whose maximum or minimum is \c1. For example: -\begin{MEx*}(4,3) - \parabola*(1,1)(2,3) - \psset{xunit=.01} - \parabola{<->}(400,3)(200,0) -\end{MEx*} -\end{description} - -The next three graphics objects interpolate an open or closed curve through -the given points. The curve at each interior point is perpendicular to the -line bisecting the angle ABC, where B is the interior point, and A and C are -the neighboring points. Scaling the coordinates \emph{does not} cause the curve -to scale proportionately. - -The curvature is controlled by the following parameter: -\begin{description} -\pitem[curvature=num1 num2 num3] - - You have to just play around with this parameter to get what you want. -Individual values outside the range -1 to 1 are either ignored or are for -entertainment only. Below is an explanation of what each number does. A, B and -C refer to three consecutive points. - - Lower values of <num1> make the curve tighter. - - Lower values of <num2> tighten the curve where the angle ABC is greater than -45 degrees, and loosen the curve elsewhere. - - <num3> determines the slope at each point. If <num3>=0, then the curve is -perpendicular at B to the bisection of ABC. If <num3>=-1, then the curve at B -is parallel to the line AC. With this value (and only this value), scaling the -coordinates causes the curve to scale proportionately. However, positive -values can look better with irregularly spaced coordinates. Values less than --1 or greater than 2 are converted to -1 and 2, respectively. -\end{description} - -Here are the three curve interpolation macros: -\begin{description} - -\oitem \pscurve`{arrows}'\c1`\ldots\cn' - - This interpolates an open curve through the points. For example: -\begin{MEx*}(4,2) - \pscurve[showpoints=true]{<->}(0,1.3)(0.7,1.8) - (3.3,0.5)(4,1.6)(0.4,0.4) -\end{MEx*} -Note the use of \p{showpoints=true} to see the points. This is helpful when -constructing a curve. - -\oitem \psecurve`{arrows}'\c1`\ldots\cn'] - - This is like \n\pscurve, but the curve is not extended to the first and last -points. This gets around the problem of trying to determine how the curve -should join the first and last points. The "e" has something to do with -``endpoints''. For example: -% D.G. modification begin - Mar. 3, 2003 -%\begin{MEx*}[0,-.9](4,4) -% D.G. modification end -\begin{MEx*}(4,4) - \psecurve[showpoints=true](.125,8)(.25,4)(.5,2) - (1,1)(2,.5)(4,.25)(8,.125) -\end{MEx*} - -\oitem \psccurve`{arrows}'\c1`\ldots\cn' - -This interpolates a closed curve through the points. "c" stands for -``closed''. For example: -\begin{MEx*}(4,1) - \psccurve[showpoints=true] - (.5,0)(3.5,1)(3.5,0)(.5,1) -\end{MEx*} -\end{description} - -\Section{Dots\label{S-dots}} - -The graphics objects -\begin{Ex} - \object \psdot`*[par](\x1,y1)' - \object \psdots`*[par]'(\x1,\y1)`(\x2,\y2)\ldots(\x n,\y n)' -\end{Ex} -put a dot at each coordinate. - -What a ``dot'' is depends on the value of the -\begin{Ex} - \Par{dotstyle=style} -\end{Ex} -parameter. This also determines the dots you get when \p{showpoints=true}. - -The dot styles are also pretty intuitive:% -\newbox\dottable -\setbox\dottable=\hbox{% - \psset{fillcolor=lightgray} - \def\mydots#1{% - \psdots[dotstyle=#1](.1,1ex)(.55,1ex)(1,1ex)(1.45,1ex)(1.9,1ex)}% - \hfill - \begin{tabular}{cl}% - \emph{Style} & \hbox to 2cm{\emph{Example}\hss} \\[2pt] - "*" & \mydots{*}\\ - "o" & \mydots{o}\\ - "Bo" & \mydots{Bo}\\ - "x" & \mydots{x}\\ - "+" & \mydots{+}\\ - "B+" & \mydots{B+}\\ - "asterisk" & \mydots{asterisk}\\ - "Basterisk" & \mydots{Basterisk}\\ - "oplus" & \mydots{oplus}\\ - "otimes" & \mydots{otimes}\\ - "|" & \mydots{|}\\ - "B|" & \mydots{B|} - \end{tabular}% - \hfill - \begin{tabular}{cl} - \emph{Style} & \hbox to 2cm{\emph{Example}\hss} \\[2pt] - "square" & \mydots{square}\\ - "Bsquare" & \mydots{Bsquare}\\ - "square*" & \mydots{square*}\\ - "diamond" & \mydots{diamond}\\ - "diamond*" & \mydots{diamond*}\\ - "triangle" & \mydots{triangle}\\ - "Btriangle" & \mydots{Btriangle}\\ - "triangle*" & \mydots{triangle*}\\ - "pentagon" & \mydots{pentagon}\\ - "Bpentagon" & \mydots{Bpentagon}\\ - "pentagon*" & \mydots{pentagon*}\\ - \end{tabular}% - \hfill}% -\addtoquickref{center}{% - {\large\textbf{Dot styles}}\par - \leavevmode\hbox to \hsize{\unhbox\dottable}} -\begin{center} - \leavevmode - \hbox to \hsize{\unhcopy\dottable}% -\end{center} - -Except for "diamond", the center of dot styles with a hollow center is colored -\p{fillcolor}. - -Here are the parameters for changing the size and orientation of the dots: -\begin{description} - -\pitem[dotsize=dim `num'] - The diameter of a circle or disc is <dim> plus <num> times \p{linewidth} -(if the optional <num> is included). The size of the other dots styles is -similar (except for the size of the "|" dot style, which is set by the -\p{tbarsize} parameter described on page \pageref{p+tbarsize}). - -\pitem[dotscale=num1 `num2'] -The dots are scaled horizontally by <num1> and vertically by <num2>. If you -only include <num1>, the arrows are scaled by <num1> in both directions. - -\pitem[dotangle=angle] - After setting the size and scaling the dots, the dots are rotated by <angle>. - -\end{description} - - -\Section{Grids\label{S-grids}} - -PSTricks has a powerful macro for making grids and graph paper: - \Mac \psgrid`(\x0,\y0)(\x1,\y1)(\x2,\y2)' -\n\psgrid{} draws a grid with opposing corners \c1 and \c2. The intervals are -numbered, with the numbers positioned at \x0 and \y0. The coordinates are -always interpreted as Cartesian coordinates. For example: -\begin{MEx}[-1,-1](3,2) - \psgrid(0,0)(-1,-1)(3,2) -\end{MEx} -(Note that the coordinates and label positioning work the same as with -\n\psaxes.) - -The main grid divisions occur on multiples of \p{xunit} and \p{yunit}. -Subdivisions are allowed as well. Generally, the coordinates would be given as -integers, without units. - -If the \c0 coordinate is omitted, \c1 is used. The default for \c1 is "(0,0)". -If you don't give any coordinates at all, then the coordinates of the current -\n\pspicture{} environment are used or a 10x10 grid is drawn. Thus, you can -include a \n\psgrid{} command without coordinates in a \n\pspicture\ -environment to get a grid that will help you position objects in the picture. - -The main grid divisions are numbered, with the numbers drawn next to the -vertical line at \x0 (away from \x2) and next to the horizontal line at \x1 -(away from \y2). \c1 can be any corner of the grid, as long as \c2 is the -opposing corner, you can position the labels on any side you want. For -example, compare -\begin{MEx}(4,1) - \psgrid(0,0)(4,1) -\end{MEx} -and -\begin{MEx}(4,1) - \psgrid(4,1)(0,0) -\end{MEx} - -The following parameters apply only to \n\psgrid: -\begin{description} - -\pitem[gridwidth=dim] - The width of grid lines. - -\pitem[gridcolor=color] - The color of grid lines. - -\pitem[griddots=num] - If <num> is positive, the grid lines are dotted, with <num> dots per -division. - -\pitem[gridlabels=dim] - The size of the numbers used to mark the grid. - -\pitem[gridlabelcolor=color] - The color of the grid numbers. - -\pitem[subgriddiv=int] - The number of grid subdivisions. - -\pitem[subgridwidth=dim] - The width of subgrid lines. - -\pitem[subgridcolor=color] - The color of subgrid lines. - -\pitem[subgriddots=num] - Like \p{griddots}, but for subdivisions. - -\end{description} - -Here is a familiar looking grid which illustrates some of the parameters: -\begin{MEx}[-1,-1](3,1) - \psgrid[subgriddiv=1,griddots=10,gridlabels=7pt](-1,-1)(3,1) -\end{MEx} - -Note that the values of \p{xunit} and \p{yunit} are important parameters for -\n\psgrid, because they determine the spacing of the divisions. E.g., if the -value of these is "1pt", and then you type -\begin{LVerb} - \psgrid(0,0)(10in,10in) -\end{LVerb} -you will get a grid with 723 main divisions and 3615 subdivisions! (Actually, -\n\psgrid{} allows at most 500 divisions or subdivisions, to limit the damage -done by this kind of mistake.) Probably you want to set \p{unit} to ".5in" or -"1in", as in -\begin{LVerb} - \psgrid[unit=.5in](0,0)(20,20) -\end{LVerb} - - -\Section{Plots} - -\File{pst-plot} -The plotting commands described in this part are defined in -"pst-plot.tex" / "pst-plot.sty", which you must load first. - -The \n\psdots, \n\psline, \n\pspolygon, \n\pscurve, \n\psecurve{} and -\n\psccurve{} graphics objects let you plot data in a variety of ways. However, -first you have to generate the data and enter it as coordinate pairs \c{}. -The plotting macros in this section give you other ways to get and use the -data. (Section \ref{S-axes} tells you how to generate axes.) - -To parameter -\begin{Ex} - \Par{plotstyle=style} -\end{Ex} -determines what kind of plot you get. Valid styles are "dots", "line", -"polygon", "curve", "ecurve", "ccurve". E.g., if the \p{plotstyle} is -"polygon", then the macro becomes a variant of the \n\pspolygon{} object. - -You can use arrows with the plot styles that are open curves, but there is no -optional argument for specifying the arrows. You have to use the \p{arrows} -parameter instead. - -\begin{Warning} -No PostScript error checking is provided for the data arguments. Read Appendix -\ref{S-raw} before including PostScript code in the arguments. - -There are system-dependent limits on the amount of data \TeX{} and PostScript -can handle. You are much less likely to exceed the PostScript limits when you -use the "line", "polygon" or "dots" plot style, with \p{showpoints=false}, -\p{linearc=0pt}, and no arrows. -\end{Warning} - -Note that the lists of data generated or used by the plot commands cannot -contain units. The values of \n\psxunit{} and \n\psyunit{} are used as the unit. - - -\begin{description} - -\oitem \fileplot{file} - -\n\fileplot{} is the simplest of the plotting functions to use. You just need a -file that contains a list of coordinates (without units), such as generated by -Mathematica or other mathematical packages. The data can be delimited by curly -braces "{"~"}", parentheses "("~")", commas, and/or white space. Bracketing -all the data with square brackets "[ ]" will significantly speed up the rate -at which the data is read, but there are system-dependent limits on how much -data \TeX{} can read like this in one chunk. (The "[" \emph{must} go at the -beginning of a line.) The file should not contain anything else (not even -"\endinput"), except for comments marked with "%". - -\n\fileplot{} only recognizes the "line", "polygon" and "dots" plot styles, and -it ignores the \p{arrows}, \p{linearc} and \p{showpoints} parameters. The -\n\listplot{} command, described below, can also plot data from file, without -these restrictions and with faster \TeX{} processing. However, you are less -likely to exceed PostScript's memory or operand stack limits with \n\fileplot. - -If you find that it takes \TeX{} a long time to process your \n\fileplot\ -command, you may want to use the \n\PSTtoEPS{} command described on page -\pageref{+PSTtoEPS}. This will also reduce \TeX's memory requirements. - -\oitem \dataplot{commands} - -\n\dataplot{} is also for plotting lists of data generated by other programs, -but you first have to retrieve the data with one of the following commands: -\begin{Ex} - \object \savedata{command}[data] - \object \readdata{command}{file} -\end{Ex} -<data> or the data in <file> should conform to the rules described above for -the data in \n\fileplot{} (with \n\savedata, the data must be delimited by -"["~"]", and with \n\readdata, bracketing the data with "["~"]" speeds things -up). You can concatenate and reuse lists, as in -\begin{LVerb} - \readdata{\foo}{foo.data} - \readdata{\bar}{bar.data} - \dataplot{\foo\bar} - \dataplot[origin={0,1}]{\bar} -\end{LVerb} - -The \n\readdata{} and \n\dataplot{} combination is faster than \n\fileplot{} -if you reuse the data. \n\fileplot{} uses less of \TeX's memory than -\n\readdata{} and \n\dataplot{} if you are also use \n\PSTtoEPS. - -Here is a plot of "Integral(sin(x))". The data was generated by Mathematica, -with -\begin{LVerb} - Table[{x,N[SinIntegral[x]]},{x,0,20}] -\end{LVerb} -and then copied to this document. -\begin{MEx}(4,3) - \psset{xunit=.2cm,yunit=1.5cm} - \savedata{\mydata}[ - {{0, 0}, {1., 0.946083}, {2., 1.60541}, {3., 1.84865}, {4., 1.7582}, - {5., 1.54993}, {6., 1.42469}, {7., 1.4546}, {8., 1.57419}, - {9., 1.66504}, {10., 1.65835}, {11., 1.57831}, {12., 1.50497}, - {13., 1.49936}, {14., 1.55621}, {15., 1.61819}, {16., 1.6313}, - {17., 1.59014}, {18., 1.53661}, {19., 1.51863}, {20., 1.54824}}] - \dataplot[plotstyle=curve,showpoints=true, - dotstyle=triangle]{\mydata} - \psline{<->}(0,2)(0,0)(20,0) -\end{MEx} - -\oitem \listplot{list} - -\n\listplot{} is yet another way of plotting lists of data. This time, <list> -should be a list of data (coordinate pairs), delimited only by white space. -<list> is first expanded by \TeX{} and then by PostScript. This means that -<list> might be a PostScript program that leaves on the stack a list of data, -but you can also include data that has been retrieved with \n\readdata{} and -\n\dataplot. However, when using the "line", "polygon" or "dots" plotstyles -with \p{showpoints=false}, \p{linearc=0pt} and no arrows, \n\dataplot{} is much -less likely than \n\listplot{} to exceed PostScript's memory or stack limits. -In the preceding example, these restrictions were not satisfied, and so the -example is equivalent to when \n\listplot{} is used: -\begin{LVerb} - ... - \listplot[plotstyle=curve,showpoints=true, - dotstyle=triangle]{\mydata} - ... -\end{LVerb} - -\oitem \psplot{$x_!\min@$}{$x_!\max@$}{function} - - \n\psplot{} can be used to plot a function $f(x)$, if you know a little -PostScript. <function> should be the PostScript code for calculating $f(x)$. -Note that you must use $x$ as the dependent variable. PostScript is not -designed for scientific computation, but \n\psplot{} is good for graphing -simple functions right from within \TeX. E.g., -\begin{LVerb} - \psplot[plotpoints=200]{0}{720}{x sin} -\end{LVerb} -plots $\sin(x)$ from 0 to 720 degrees, by calculating $\sin(x)$ roughly every -3.6 degrees and then connecting the points with \n\psline. Here are plots of -$\sin(x)\cos((x/2)^2)$ and $\sin^2(x)$: -\begin{MEx}[0,-1](4,1) - \psset{xunit=1.2pt} - \psplot[linecolor=gray,linewidth=1.5pt,plotstyle=curve]% - {0}{90}{x sin dup mul} - \psplot[plotpoints=100]{0}{90}{x sin x 2 div 2 exp cos mul} - \psline{<->}(0,-1)(0,1) - \psline{->}(100,0) -\end{MEx} - -\oitem \parametricplot{$t_!\min@$}{$t_!\max@$}{function} - -This is for a parametric plot of $(x(t),y(t))$. <function> is the PostScript -code for calculating the pair $x(t)$ $y(t)$. - -For example, -\begin{MEx*}(3,3) - \parametricplot[plotstyle=dots,plotpoints=13]% - {-6}{6}{1.2 t exp 1.2 t neg exp} -\end{MEx*} -plots 13 points from the hyperbola $xy=1$, starting with $(1.2^{-6},1.2^6)$ -and ending with $(1.2^6,1.2^{-6})$. - -Here is a parametric plot of $(\sin(t),\sin(2t))$: -\begin{MEx}[-2,-1](2,1) - \psset{xunit=1.7cm} - \parametricplot[linewidth=1.2pt,plotstyle=ccurve]% - {0}{360}{t sin t 2 mul sin} - \psline{<->}(0,-1.2)(0,1.2) - \psline{<->}(-1.2,0)(1.2,0) -\end{MEx} - -\end{description} - -The number of points that the \n\psplot{} and \n\parametricplot{} commands -calculate is set by the -\begin{Ex} - \Par{plotpoints=int} -\end{Ex} -parameter. Using "curve" or its variants instead of "line" and increasing the -value of \p{plotpoints} are two ways to get a smoother curve. Both ways -increase the imaging time. Which is better depends on the complexity of the -computation. (Note that all PostScript lines are ultimately rendered as a -series (perhaps short) line segments.) Mathematica generally uses "lineto" to -connect the points in its plots. The default minimum number of plot points for -Mathematica is 25, but unlike \n\psplot{} and \n\parametricplot, Mathematica -increases the sampling frequency on sections of the curve with greater -fluctuation. - -\endinput - -%% END psd-basi.tex diff --git a/Master/texmf-dist/doc/generic/pstricks/psd-cove.tex b/Master/texmf-dist/doc/generic/pstricks/psd-cove.tex deleted file mode 100644 index 177e0bff2c1..00000000000 --- a/Master/texmf-dist/doc/generic/pstricks/psd-cove.tex +++ /dev/null @@ -1,108 +0,0 @@ -%% BEGIN psd-cove.tex - -\begingroup -\evensidemargin \paperwidth\relax -\advance\evensidemargin -2in -\advance\evensidemargin -\textwidth -\divide\evensidemargin 2 -\oddsidemargin\evensidemargin - -\begin{titlepage} - -\let\footnotesize\small -\let\footnoterule\relax -\setcounter{page}{0} - -\null -\vfil -\vskip 25pt -\begin{center} - {\LARGE\textbf{PSTricks}}:\\[5pt] - {\large\textbf{PostScript macros for Generic TeX}.}\\ -\end{center} - -\bigskip\bigskip -\hbox to \hsize{% - \hss - \psset{unit=.4cm} - \begin{pspicture}(0,-2)(31,12) - \catcode`\<=12 - \rput(1.5,0){% - \psellipse[linewidth=1pt](8,7)(1,3) - \psframe[linecolor=white,fillstyle=solid,fillcolor=white] - (6.4,6.5)(8,7.5) - \psline[linearc=.3,linewidth=1pt](8,8)(8,7.5)(4,7.5) - \psbezier[linewidth=1pt](4,7.5)(3,7.5)(3,6.5)(3,5.5) - \psline[linearc=.3,linewidth=1pt](8,6)(8,6.5)(5,6.5) - \psbezier[linewidth=1pt](5,6.5)(4,6.5)(4,6.5)(4,5.5) - \psline[linewidth=1pt](3,5.5)(4,5.5) - \psline[linearc=.3,linewidth=1pt](5,7.5)(5,8)(6,8)(6,7.5) - \psframe[linewidth=1pt](5.3,8)(5.7,8.7) - \psframe[linewidth=1pt,framearc=1,fillstyle=solid, - fillcolor=white](4,8.7)(7,9) - \multirput(3.5,4.8)(0,-1){4}{% - \psbezier[linewidth=.5pt](0,0)(.25,-.4)(-.25,-.4)(0,0)} - \rput[t](5.5,0){Dripping Faucet}} - \rput(20,5){% - \pspolygon[linecolor=white,fillstyle=vlines, - fillcolor=darkgray,hatchsep=.2](1,4.5)(1,4)(4,4)(4,4.5) - \psline[linewidth=2pt](1,4)(4,4) - \psline[linewidth=1.5pt](2.5,4)(2.5,3.5)(2.9,3.3)(2.1,2.9) - (2.9,2.5)(2.1,2.1)(2.9,1.7)(2.1,1.3)(2.5,1.1)(2.5,0.6) - \psframe[linecolor=black,linewidth=1.5pt,fillstyle=solid, - fillcolor=lightgray](1.8,-1)(3.2,.6) - \rput(2.5,-.2){$M$} - \psline{<->}(3.7,-.9)(3.7,.5) - \psframe[linecolor=black,linewidth=1.5pt,fillstyle=solid, - fillcolor=lightgray](1.8,-3.5)(3.2,-1.9) - \rput(2.5,-2.7){$m$} - \psline{->}(5,1)(5,-1) - \rput[l](5.5,0){$g$} - \psline{->}(3.7,-2)(3.7,-3.4) - \rput[t](2.5,-4){Mathematical Model for} - \rput[t](2.5,-5){a Dripping Faucet} - \rput(-6,-2){% - \psset{linewidth=2pt} - \psline(0,.5)(2,.5) - \psline(0,-.5)(2,-.5) - \psline(1.5,1)(2.5,0)(1.5,-1)}} - \psframe[linewidth=2pt,framearc=.05,linecolor=gray](0,-2.5)(31,12) - \uput[l]{90}(0,4.75){\texttt{leecheng}} - \end{pspicture}% - \hss} -\bigskip -\bigskip - -\begin{center} -{\LARGE\textbf{User's Guide}}\par -\vskip 3em -{\large \lineskip .75em Timothy Van Zandt}\par -\vskip 1.5em -{\large \thefiledate\\[2pt] - Version \Version% - \footnote{Documentation edited and repacked at \today\ by Rolf Niepraschk - \url{niepraschk@gmx.de} - and Herbert Vo\ss\ \url{voss@pstricks.de}.}}\par -% \Verb[codes={\catcode`\<=12}]+<niepraschk@ptb.de>+ -% and Herbert Voß \Verb[codes={\catcode`\<=12}]+<voss@perce.de>+.}}\par -\end{center} -\vfil -\small -Author's address:\\ - Department of Economics and Political Science\\ - INSEAD\\ - Boulevard de Constance\\ - 77305 Fontainebleau Cedex\\ - France\\[3mm] - Internet: \Verb[codes={\catcode`\<=12}]+<tvz@econ.insead.fr>+ -\end{titlepage} - -\endgroup - -\setcounter{footnote}{0} -\tableofcontents -\pagenumbering{arabic} - -\endinput - -%% END psd-cove.tex diff --git a/Master/texmf-dist/doc/generic/pstricks/psd-cust.tex b/Master/texmf-dist/doc/generic/pstricks/psd-cust.tex deleted file mode 100644 index 03441baca4f..00000000000 --- a/Master/texmf-dist/doc/generic/pstricks/psd-cust.tex +++ /dev/null @@ -1,406 +0,0 @@ -%% BEGIN psd-cust.tex - -\part{Custom graphics\label{P-custom}} - -\Section{The basics} - -PSTricks contains a large palette of graphics objects, but sometimes you need -something special. For example, you might want to shade the region between two -curves. The - \Mac \pscustom`*[par]'{commands} -command lets you ``roll you own'' graphics object. - -Let's review how PostScript handles graphics. A \emph{path} is a line, in the -mathematical sense rather than the visual sense. A path can have several -disconnected segments, and it can be open or closed. PostScript has various -operators for making paths. The end of the path is called the \emph{current -point}, but if there is no path then there is no current point. To turn the -path into something visual, PostScript can \emph{fill} the region enclosed by -the path (that is what \p{fillstyle} and such are about), and \emph{stroke} the -path (that is what \p{linestyle} and such are about). - -At the beginning of \n\pscustom, there is no path. There are various commands -that you can use in \n\pscustom{} for drawing paths. Some of these (the open -curves) can also draw arrows. \n\pscustom{} fills and strokes the path at the -end, and for special effects, you can fill and stroke the path along the way -using \n\fill{} and \n\stroke{} (see below). - -\begin{drivers} -\n\pscustom{} uses \n\pstverb{} and \n\pstunit. There are system-dependent -limits on how long the argument of "\special" can be. You may run into this -limit using \n\pscustom{} because all the PostScript code accumulated by -\n\pscustom{} is the argument of a single "\special" command. -\end{drivers} - -\Section{Parameters} - -You need to keep the separation between drawing, stroking and filling paths in -mind when setting graphics parameters. The \p{linewidth} and \p{linecolor} -parameters affect the drawing of arrows, but since the path commands do not -stroke or fill the paths, these parameters, and the \p{linestyle}, -\p{fillstyle} and related parameters, do not have any other effect (except -that in some cases \p{linewidth} is used in some calculations when drawing the -path). \n\pscustom{} and \n\fill{} make use of \p{fillstyle} and related -parameters, and \n\pscustom{} and \n\stroke{} make use of p{linestyle} and -related parameters. - -For example, if you include -\begin{LVerbatim} - \psline[linewidth=2pt,linecolor=blue,fillstyle=vlines]{<-}(3,3)(4,0) -\end{LVerbatim} -in \n\pscustom, then the changes to \p{linewidth} and \p{linecolor} will -affect the size and color of the arrow but not of the line when it is stroked, -and the change to \p{fillstyle} will have no effect at all. - -The \p{shadow}, \p{border}, \p{doubleline} and \p{showpoints} parameters are -disabled in \n\pscustom, and the \p{origin} and \p{swapaxes} parameters only -affect \n\pscustom{} itself, but there are commands (described below) that let -you achieve these special effects. - -The \p{dashed} and \p{dotted} line styles need to know something about the -path in order to adjust the dash or dot pattern appropriately. You can give -this information by setting the -\begin{Ex} - \Par{linetype=int} -\end{Ex} -parameter. If the path contains more than one disconnected segment, there is -no appropriate way to adjust the dash or dot pattern, and you might as well -leave the default value of \p{linetype}. Here are the values for simple paths: -\begin{center} -\begin{tabular}{cl} - \emph{Value} & \emph{Type of path}\\ - 0 & Open curve without arrows.\\ - -1 & Open curve with an arrow at the beginning.\\ - -2 & Open curve with an arrow at the end.\\ - -3 & Open curve with an arrow at both ends.\\ - 1 & Closed curve with no particular symmetry.\\ - $n$\textgreater 1 & Closed curve with $n$ symmetric segments. -\end{tabular} -\end{center} - -\Section{Graphics objects} - -You can use most of the graphics objects in \n\pscustom. These draw paths and -making arrows, but do not fill and stroke the paths. - -There are three types of graphics objects: -\begin{description} -\item[Special] - Special graphics objects include \n\psgrid, \n\psdots, \n\qline{} and -\n\qdisk. You cannot use special graphics objects in \n\pscustom. - -\item[Closed] - You are allowed to use closed graphics objects in \n\pscustom, but their -effect is unpredictable.\footnote{% -The closed objects never use the current point as an coordinate, but typically -they will close any existing paths, and they might draw a line between the -currentpoint and the closed curved.} -Usually you would use the open curves plus \n\closepath{} (see below) to draw -closed curves. - -\item[Open]The open graphics objects are the most useful commands for drawing -paths with \n\pscustom. By piecing together several open curves, you can draw -arbitrary paths. The rest of this section pertains to the open graphics -objects. -\end{description} - - By default, the open curves draw a straight line between the current point, -if it exists, and the beginning of the curve, except when the curve begins -with an arrow. For example -\begin{MEx*}(3,3) - \pscustom{% - \psarc(0,0){1.5}{5}{85} - \psarcn{->}(0,0){3}{85}{5}} -\end{MEx*} - -Also, the following curves make use of the current point, if it exists, as a -first coordinate: -\begin{quote} - \n\psline{} and \n\pscurve.\\ - The plot commands, with the "line" or "curve" \p{plotstyle}.\\ - \n\psbezier\, if you only include three coordinates.\\ -\end{quote} -For example: -\begin{MEx*}(4,3) - \pscustom[linewidth=1.5pt]{% - \psplot[plotstyle=curve]{.67}{4}{2 x div} - \psline(4,3)} -\end{MEx*} -We'll see later how to make that one more interesting. Here is another example -\begin{MEx*}(4,3) - \pscustom{% - \psline[linearc=.2]{|-}(0,2)(0,0)(2,2) - \psbezier{->}(2,2)(3,3)(1,0)(4,3)} -\end{MEx*} - -However, you can control how the open curves treat the current point with the -\begin{Ex} - \Par{liftpen=0/1/2} -\end{Ex} -parameter. - -If \p{liftpen=0}, you get the default behavior described above. For example -\begin{MEx*}(4,3) - \pscustom[linewidth=2pt,fillstyle=solid,fillcolor=gray]{% - \pscurve(0,2)(1,2.5)(2,1.5)(4,3) - \pscurve(4,1)(3,0.5)(2,1)(1,0)(0,.5)} -\end{MEx*} - -If \p{liftpen=1}, the curves do not use the current point as the first -coordinate (except \n\psbezier, but you can avoid this by explicitly including -the first coordinate as an argument). For example: -\begin{MEx*}(4,3) - \pscustom[linewidth=2pt,fillstyle=solid,fillcolor=gray]{% - \pscurve(0,2)(1,2.5)(2,1.5)(4,3) - \pscurve[liftpen=1](4,1)(3,0.5)(2,1)(1,0)(0,.5)} -\end{MEx*} - -If \p{liftpen=2}, the curves do not use the current point as the first -coordinate, and they do not draw a line between the current point and the -beginning of the curve. For example -\begin{MEx*}(4,3) - \pscustom[linewidth=2pt,fillstyle=solid,fillcolor=gray]{% - \pscurve(0,2)(1,2.5)(2,1.5)(4,3) - \pscurve[liftpen=2](4,1)(3,0.5)(2,1)(1,0)(0,.5)} -\end{MEx*} - -Later we will use the second example to fill the region between the two -curves, and then draw the curves. - -\Section{Safe tricks} - -The commands described under this heading, which can only be used in -\n\pscustom, do not run a risk of PostScript errors (assuming your document -compiles without \TeX{} errors). - -Let's start with some path, fill and stroke commands: -\begin{description} - -\mitem \newpath - -Clear the path and the current point. - -\mitem \moveto(coor) - - This moves the current point to \c{}. - -\mitem \closepath - - This closes the path, joining the beginning and end of each piece (there may -be more than one piece if you use \n\moveto).\footnote{% -Note that the path is automatically closed when the region is filled. Use -\n\closepath{} if you also want to close the boundary.} - -\mitem \stroke`[par]' - - This strokes the path (non-destructively). \n\pscustom{} automatically -strokes the path, but you might want to stroke it twice, e.g., to add a -border. Here is an example that makes a double line and adds a border (this -example is kept so simple that it doesn't need \n\pscustom{} at all): -\begin{MEx*}(4,3) - \psline(0,3)(4,0) - \pscustom[linecolor=white,linewidth=1.5pt]{% - \psline(0,0)(4,3) - \stroke[linewidth=5\pslinewidth] - \stroke[linewidth=3\pslinewidth,linecolor=black]} -\end{MEx*} - -\mitem \fill`[par]' - - This fills the region (non-destructively). \n\pscustom{} automatically fills -the region as well. - -\mitem \gsave - - This saves the current graphics state (i.e., the path, color, line width, -coordinate system, etc.) \n\grestore{} restores the graphics state. \n\gsave{} -and \n\grestore{} must be used in pairs, properly nested with respect to \TeX{} -groups. You can have have nested \n\gsave-\n\grestore{} pairs. - -\mitem \grestore - - See above. - -Here is an example that fixes an earlier example, using \n\gsave{} and -\n\grestore: -\begin{MEx}(4,3) - \psline{<->}(0,3)(0,0)(4,0) - \pscustom[linewidth=1.5pt]{ - \psplot[plotstyle=curve]{.67}{4}{2 x div} - \gsave - \psline(4,3) - \fill[fillstyle=solid,fillcolor=gray] - \grestore} -\end{MEx} -Observe how the line added by "\psline(4,3)" is never stroked, because it is -nested in "\gsave" and "\grestore". - -Here is another example: -\begin{MEx*}(4,3) - \pscustom[linewidth=1.5pt]{ - \pscurve(0,2)(1,2.5)(2,1.5)(4,3) - \gsave - \pscurve[liftpen=1](4,1)(3,0.5)(2,1)(1,0)(0,.5) - \fill[fillstyle=solid,fillcolor=gray] - \grestore} - \pscurve[linewidth=1.5pt](4,1)(3,0.5)(2,1)(1,0)(0,.5) -\end{MEx*} -Note how I had to repeat the second \n\pscurve{} (I could have repeated it -within \n\pscustom, with \p{liftpen=2}), because I wanted to draw a line -between the two curves to enclose the region but I didn't want this line to be -stroked. -\end{description} - -The next set of commands modify the coordinate system. -\begin{description} - -\mitem \translate(coor) - - Translate coordinate system by \c{}. This shifts everything that comes later -by \c{}, but doesn't affect what has already been drawn. - -\mitem \scale{num1 `num2'} - - Scale the coordinate system in both directions by <num1>, or horizontally by -<num1> and vertically by <num2>. - -\mitem \rotate{angle} - - Rotate the coordinate system by <angle>. - -\mitem \swapaxes - - Switch the x and y coordinates. This is equivalent to -\begin{LVerb} - \rotate{-90} - \scale{-1 1 scale} -\end{LVerb} - -\mitem \msave - - Save the current coordinate system. You can then restore it with -\n\mrestore. You can have nested \n\msave-\n\mrestore{} pairs. \n\msave{} and -\n\mrestore{} do not have to be properly nested with respect to \TeX{} groups or -\n\gsave{} and \n\grestore. However, remember that \n\gsave{} and \n\grestore -also affect the coordinate system. \n\msave-\n\mrestore{} lets you change the -coordinate system while drawing part of a path, and then restore the old -coordinate system without destroying the path. \n\gsave-\n\grestore, on the -other hand, affect the path and all other componments of the graphics state. - -\mitem \mrestore - - See above. -\end{description} - -And now here are a few shadow tricks: -\begin{description} -\mitem \openshadow`[par]' - -Strokes a replica of the current path, using the various shadow parameters. - -\mitem \closedshadow`[par]' - -Makes a shadow of the region enclosed by the current path as if it were opaque -regions. - -\mitem \movepath(coor) - -Moves the path by \c{}. Use \n\gsave-\n\grestore{} if you don't want to lose -the original path. -\end{description} - -\Section{Pretty safe tricks} - -The next group of commands are safe, \emph{as long as there is a current -point}! - -\begin{description} -\mitem \lineto(coor) - - This is a quick version of "\psline(<coor>)". - -\mitem \rlineto(coor) - - This is like \n\lineto, but \c{} is interpreted relative to the current -point. - -\mitem \curveto\c1\c2\c3 - - This is a quick version of "\psbezier"\c1\c2\c3. - -\mitem \rcurveto\c1\c2\c3 - - This is like \n\curveto, but \c1, \c2 and \c3 are interpreted relative to -the current point. -\end{description} - -\Section{For hackers only} - -For PostScript hackers, there are a few more commands. Be sure to read -Appendix \ref{S-raw} before using these. Needless to say: -\begin{Warning} -Misuse of the commands in this section can cause PostScript errors. -\end{Warning} - - The PostScript environment in effect with \n\pscustom{} has one unit equal to -one \TeX{} "pt". - -\begin{description} - -\mitem \code{code} - Insert the raw PostScript code. - -\mitem \dim{dim} - - Convert the PSTricks dimension to the number of "pt"'s, and inserts it in -the PostScript code. - -\mitem \coor\c1`\c2...\cn' - -Convert one or more PSTricks coordinates to a pair of numbers (using "pt" -units), and insert them in the PostScript code. - -\mitem \rcoor\c1`\c2...\cn' - -Like \n\coor, but insert the coordinates in reverse order. - -\mitem \file{file} - - This is like \n\code, but the raw PostScript is copied verbatim (except -comments delimited by "%") from <file>. - -\mitem \arrows{arrows} - - This defines the PostScript operators "ArrowA" and "ArrowB" so that -\begin{LVerb} - x2 y2 x1 y1 ArrowA - x2 y2 x1 y1 ArrowB -\end{LVerb} -each draws an arrow(head) with the tip at \c1 and pointing from \c2. "ArrowA" -leaves the current point at end of the arrowhead, where a connect line should -start, and leaves \c2 on the stack. "ArrowB" does not change the current -point, but leaves -\begin{LVerb} - x2 y2 x1' y1' -\end{LVerb} -on the stack, where \c{1'} is the point where a connecting line should join. -To give an idea of how this work, the following is roughly how PSTricks draws -a bezier curve with arrows at the end: -\begin{MEx*}(4,3) - \pscustom{ - \arrows{|->} - \code{ - 80 140 5 5 ArrowA - 30 -30 110 75 ArrowB - curveto}} -\end{MEx*} - -\mitem \setcolor{color} - - Set the color to <color>. - -\end{description} - -\endinput - -%% END psd-cust.tex diff --git a/Master/texmf-dist/doc/generic/pstricks/psd-esse.tex b/Master/texmf-dist/doc/generic/pstricks/psd-esse.tex deleted file mode 100644 index a76636d0d3b..00000000000 --- a/Master/texmf-dist/doc/generic/pstricks/psd-esse.tex +++ /dev/null @@ -1,392 +0,0 @@ -%% BEGIN psd-esse.tex - -\part*{Welcome to PSTricks} - -PSTricks is a collection of PostScript-based \TeX{} macros that is compatible -with most \TeX{} macro packages, including Plain \TeX, \LaTeX{} and \ConTeXt, -PSTricks gives you color, graphics, rotation, trees and overlays. PSTricks -puts the icing (PostScript) on your cake (\TeX)! - -To install PSTricks, follow the instructions in the file "read-me.pst" that -comes with the PSTricks package. Even if PSTricks has already been installed -for you, give "read-me.pst" a look over. - -This \emph{User's Guide} verges on being a reference manual, meaning that it is -not designed to be read linearly. Here is a recommended strategy: Finish -reading this brief overview of the features in PSTricks. Then thumb through -the entire \emph{User's Guide} to get your own overview. Return to -Part~\ref{P-essentials} (Essentials) and read it carefully. Refer to the -remaining sections as the need arises. - -When you cannot figure out how to do something or when trouble arises, check -out the appendices (Help). You just might be lucky enough to find a solution. -There is also a \LaTeX{} file "samples.pst" of samples that is distributed with -PSTricks. Look to this file for further inspiration. - -This documentation is written with \LaTeX. Some examples use \LaTeX{} specific -constructs and some don't. However, there is nothing \LaTeX{} specific about -any of the macros, nor is there anything that does not work with \LaTeX. This -package has been tested with Plain \TeX, \LaTeX{} and \ConTeXt{} and -should work with other \TeX{} macro packages as well. - -\File{pstricks} -The main macro file is "pstricks.tex"/"pstricks.sty". Each of the PSTricks -macro files comes with a ".tex" extension and a ".sty" extension; these are -equivalent, but the ".sty" extension means that you can include the file name -as a \LaTeX{} package. - -There are numerous supplementary macro files. A file, like the one above and -the left, is used in this \emph{User's Guide} to remind you that you must input -a file before using the macros it contains. - -For most PSTricks macros, even if you misuse them, you will not get PostScript -errors in the output. However, it is recommended that you resolve any \TeX{} -errors before attempting to print your document. A few PSTricks macros pass on -PostScript errors without warning. Use these with care, especially if you are -using a networked printer, because PostScript errors can cause a printer to -bomb. Such macros are pointed out in strong terms, using a warning like this -one: - -\begin{Warning} -Use macros that do not check for PostScript errors with care. PostScript -errors can cause a printer to bomb! -\end{Warning} - -Keep in mind the following typographical conventions in this User's Guide. -\begin{itemize} - \item All literal input characters, i.e., those that should appear verbatim - in your input file, appear in upright "Helvetica" and {\UsageFont - Helvetica-Bold} fonts. - \item Meta arguments, for which you are supposed to substitute a value - (e.g., <angle>) appear in slanted <Helvetica-Oblique> and - {\UsageFont\MetaFont Helvetica-BoldOblique} fonts. - \item The main entry for a macro or parameter that states its syntax appears - in a large bold font, \emph{except for the optional arguments, which are in - medium weight}. This is how you can recognize the optional arguments. - \item References to PSTricks commands and parameters within paragraphs are - set in {\UsageFont Helvetica-Bold}. - -\end{itemize} - -\part{The Essentials\label{P-essentials}} - - -\section{Arguments and delimiters} - -Here is some nitty-gritty about arguments and delimiters that is really -important to know. - -The PSTricks macros use the following delimiters: -\begin{center} -%% DG: to do -% Begin modification RN, 2002-12-29 -\iffalse -\begin{tabular}{rl} -Curly braces & "{<arg>}" \\ -Brackets (only for optional arguments) & "[<arg>]" \\ -Parentheses and commas for coordinates & \c{} \\ -"=" and "," for parameters & "<par1>=<val1>," \ldots\\ -\end{tabular} -\fi -\begin{tabular}{rl} -Curly braces & "{"<arg>"}" \\ -Brackets (only for optional arguments) & "["<arg>"]" \\ -Parentheses and commas for coordinates & \c{} \\ -"=" and "," for parameters & <par1>"="<val1>"," \ldots\\ -\end{tabular} -% End modification RN -\end{center} -Spaces and commas are also used as delimiters within arguments, but in this -case the argument is expanded before looking for the delimiters. - -Always use a period rather than a comma to denote the decimal point, so that -PSTricks doesn't mistake the comma for a delimiter. - -The easiest mistake to make with the PSTricks macros is to mess up the -delimiters. This may generate complaints from \TeX{} or PSTricks about bad -arguments, or other unilluminating errors such as the following: -\begin{description}\itemsep=0pt\parsep=0pt -\item[] "! Use of \get@coor doesn't match its definition." -\item[] "! Paragraph ended before \pst@addcoor was complete." -\item[] -"! Forbidden control sequence found while scanning use of \check@arrow." -\item[] "! File ended while scanning use of \lput." -\end{description} -Delimiters are generally the first thing to check when you get errors with a -PSTricks macro. - -Since PSTricks macros can have many arguments, it is useful to know that you -can leave a space or new line between any arguments, except between arguments -enclosed in curly braces. If you need to insert a new line between arguments -enclosed in curly braces, put a comment character "%" at the end of the line. - -As a general rule, the first non-space character after a PSTricks macro should -not be a "[" or "(". Otherwise, PSTricks might think that the "[" or "(" is -actually part of the macro. You can always get around this by inserting a pair -"{}" of braces somewhere between the macro and the "[" or "(". - - -\Section{Color\label{S-color}} - -The grayscales -\begin{quote} - "black", "darkgray", "gray", "lightgray", and "white", -\end{quote} -and the colors -\begin{quote} - "red", "green", "blue", "cyan", "magenta", and "yellow" -\end{quote} -are predefined in PSTricks. - -This means that these names can be used with the graphics objects that are -described in later sections. This also means that the command \n\gray{} (or -\n\red, etc.) can be used much like "\rm" or "\tt", as in -\begin{Ex} - \gray\Large"{\gray This stuff should be gray.}" -\end{Ex} -The commands \n\gray, \n\red, etc. can be nested like the font commands as -well. There are a few important ways in which the color commands differ from -the font commands: -\begin{enumerate} - \item The color commands can be used in and out of math mode (there are no - restrictions, other than proper \TeX{} grouping). - \item The color commands affect whatever is in their scope (e.g., lines), - not simply characters. - \item The scope of the color commands does not extend across pages. - \item The color commands are not as robust as font commands when used inside - box macros. See page \pageref{colorboxproblems} for details. You can avoid - most problems by explicitly grouping color commands (e.g., enclosing the - scope in braces "{}") whenever these are in the argument of another - command.\footnote{% -However, this is not necessary with the PSTricks LR-box commands, expect when -\n\psverbboxtrue{} is in effect. See Section \ref{S-boxes}.} - -\end{enumerate} - -You can define or redefine additional colors and grayscales with the following -commands. In each case, <numi> is a number between 0 and 1. Spaces are used as -delimiters---don't add any extraneous spaces in the arguments. - -\begin{description} - -\mitem \newgray{color}{num} - - <num> is the gray scale specification, to be set by PostScript's "setgray" -operator. 0 is black and 1 is white. For example: -\begin{LVerb} - \newgray{darkgray}{.25} -\end{LVerb} - -\mitem \newrgbcolor{color}{num1 num2 num3} - - <num1 num2 num3> is a \emph{red-green-blue} specification, to be set by -PostScript's "setrgbcolor" operator. For example, -\begin{LVerb} - \newrgbcolor{green}{0 1 0} -\end{LVerb} - -\mitem \newhsbcolor{color}{num1 num2 num3} - - <num1 num2 num3> is an \emph{hue-saturation-brightness} specification, to be -set by PostScript's "sethsbcolor" operator. For example, -\begin{LVerb} - \newhsbcolor{mycolor}{.3 .7 .9} -\end{LVerb} - -\mitem \newcmykcolor{color}{num1 num2 num3 num4} - - <num1 num2 num3 num4> is a \emph{cyan-magenta-yellow-black} specification, to -be set by PostScript's "newcmykcolor" operator. For example, -\begin{LVerb} - \newcmykcolor{hercolor}{.5 1 0 .5} -\end{LVerb} - -\end{description} - -For defining new colors, the \emph{rbg} model is a sure thing. \emph{hsb} is not -recommended. \emph{cmyk} is not supported by all Level 1 implementations of -PostScript, although it is best for color printing. For more information on -color models and color specifications, consult the \emph{PostScript Language -Reference Manual}, 2nd Edition (Red Book), and a color guide. - -\begin{drivers} The command \n\pstVerb{} must be defined.\end{drivers} - - -\Section{Setting graphics parameters\label{S-par}} - -PSTricks uses a key-value system of graphics parameters to customize the -macros that generate graphics (e.g., lines and circles), or graphics combined -with text (e.g., framed boxes). You can change the default values of -parameters with the command \n\psset, as in -\begin{LVerb} - \psset{fillcolor=yellow} - \psset{linecolor=blue,framearc=.3,dash=3pt 6pt} -\end{LVerb} -The general syntax is: - \Mac \psset{par1=value1`,par2=value2,\ldots'} -As illustrated in the examples above, spaces are used as delimiters for some -of the values. Additional spaces are allowed only following the comma that -separates <par>"="<value> pairs (which is thus a good place to start a new -line if there are many parameter changes). E.g., the first example is -acceptable, but the second is not: -\begin{LVerb} - \psset{fillcolor=yellow, linecolor=blue} - \psset{fillcolor= yellow,linecolor =blue } -\end{LVerb} -The parameters are described throughout this \emph{User's Guide}, as they are -needed. - -Nearly every macro that makes use of graphics parameters allows you to include -changes as an optional first argument, enclosed in square brackets. -For example, -\begin{LVerb} - \psline[linecolor=green,linestyle=dotted](8,7) -\end{LVerb} -draws a dotted, green line. It is roughly equivalent to -\begin{LVerb} - {\psset{linecolor=green,linestyle=dotted}\psline(8,7)} -\end{LVerb} - -For many parameters, PSTricks processes the value and stores it in a peculiar -form, ready for PostScript consumption. For others, PSTricks stores the value -in a form that you would expect. In the latter case, this \emph{User's Guide} -will mention the name of the command where the value is stored. This is so -that you can use the value to set other parameters. E.g., -\begin{LVerb} - \psset{linecolor=\psfillcolor,doublesep=.5\pslinewidth} -\end{LVerb} -However, even for these parameters, PSTricks may do some processing and -error-checking, and you should always set them using \n\psset{} or as optional -parameter changes, rather than redefining the command where the value is -stored. - -\Section{Dimensions, coordinates and angles\label{S-coor}} - -Whenever an argument of a PSTricks macro is a dimension, the unit is optional. -The default unit is set by the -\begin{Ex} - \Par{unit=dim} (1cm) -\end{Ex} -parameter. For example, with the default value of "1cm", the following are -equivalent: -\begin{LVerb} - \psset{linewidth=.5cm} - \psset{linewidth=.5} -\end{LVerb} -By never explicitly giving units, you can scale graphics by changing the value -of \p{unit}. - -You can use the default coordinate when setting non-PSTricks dimensions as -well, using the commands -\begin{Ex} - \object \pssetlength{cmd}{dim} - \object \psaddtolength{cmd}{dim} -\end{Ex} -where <cmd> is a dimension register (in \LaTeX{} parlance, a ``length''), and -<dim> is a length with optional unit. These are analogous to \LaTeX's -"\setlength" and "\addtolength". - -Coordinate pairs have the form \c{}. The origin of the coordinate system is at -\TeX's currentpoint. The command \n\SpecialCoor{} lets you use polar -coordinates, in the form "(<r>;<a>)", where <r> is the radius (a dimension) -and <a> is the angle (see below). You can still use Cartesian coordinates. For -a complete description of \n\SpecialCoor, see Section \ref{S-SpecialCoor}. - -The \p{unit} parameter actually sets the following three parameters: -\begin{Ex} - \Par{xunit=dim} (1cm) - \Par{yunit=dim} (1cm) - \Par{runit=dim} (1cm) -\end{Ex} -These are the default units for x-coordinates, y-coordinates, and all other -coordinates, respectively. By setting these independently, you can scale the x -and y dimensions in Cartesian coordinate unevenly. After changing \p{yunit} to -"1pt", the two \n\psline's below are equivalent: -\begin{LVerb} - \psset{yunit=1pt} - \psline(0cm,20pt)(5cm,80pt) - \psline(0,20)(5,80) -\end{LVerb} - -The values of the \p{runit}, \p{xunit} and \p{yunit} parameters are stored in -the dimension registers \n\psunit{} (also \n\psrunit), \n\psxunit{} and -\n\psyunit. - -Angles, in polar coordinates and other arguments, should be a number giving -the angle in degrees, by default. You can also change the units used for -angles with the command - \Mac \degrees`[num]' -<num> should be the number of units in a circle. For example, you might use -\begin{LVerb} - \degrees[100] -\end{LVerb} -to make a pie chart when you know the shares in percentages. \n\degrees{} -without the argument is the same as -\begin{LVerb} - \degrees[360] -\end{LVerb} -The command - \Mac \radians -is short for -\begin{Ex} - "\degrees[6.28319]" -\end{Ex} -\n\SpecialCoor{} lets you specify angles in other ways as well. - -\Section{Basic graphics parameters} - -The width and color of lines is set by the parameters: -\begin{Ex} - \Par{linewidth=dim} - \Par{linecolor=color} -\end{Ex} -The \p{linewidth} is stored in the dimension register \n\pslinewidth, and the -\p{linecolor} is stored in the command \n\pslinecolor. - -The regions delimited by open and closed curves can be filled, as determined -by the parameters: -\begin{Ex} - \p{fillstyle=<style>}\\ - \p{fillcolor=<color>} -\end{Ex} -When \p{fillstyle=none}, the regions are not filled. When \p{fillstyle=solid}, -the regions are filled with \p{fillcolor}. Other \p{fillstyle}'s are described -in Section \ref{S-fillstyles}. - -The graphics objects all have a starred version (e.g., \n\psframe*) which -draws a solid object whose color is \p{linecolor}. For example, -\begin{MEx}(2,1) - \psellipse*(1,.5)(1,.5) -\end{MEx} - -Open curves can have arrows, according to the -\begin{Ex} - \p{arrows=<arrows>} -\end{Ex} -parameter. If \p{arrows=-}, you get no arrows. -\begingroup -\catcode`\<=12 -If \p{arrows=<->}, you get arrows on both ends of the curve. You can also set -\p{arrows=->} and \p{arrows=<-}, -\endgroup -if you just want an arrow on the end or beginning of the curve, respectively. -With the open curves, you can also specify the arrows as an optional argument -enclosed in "{}" brackets. This should come after the optional parameters -argument. E.g., -\begin{MEx}(2,1) - \psline[linewidth=2pt]{<-}(2,1) -\end{MEx} -Other arrow styles are described in Section \ref{S-arrows} - -If you set the -\begin{Ex} - \Par{showpoints=true/false} -\end{Ex} -parameter to "true", then most of the graphics objects will put dots at the -appropriate coordinates or control points of the object.\footnote{% -The parameter value is stored in the conditional "\ifshowpoints".} -Section \ref{S-dots} describes how to change the dot style. - -\endinput - -%% END psd-esse.tex diff --git a/Master/texmf-dist/doc/generic/pstricks/psd-fill.tex b/Master/texmf-dist/doc/generic/pstricks/psd-fill.tex deleted file mode 100644 index e9df05eb744..00000000000 --- a/Master/texmf-dist/doc/generic/pstricks/psd-fill.tex +++ /dev/null @@ -1,12 +0,0 @@ -%% BEGIN psd-fill.tex - -\part{Filling and Tiling\label{P-tiling}} - -\Section{Overview} - -\File{pst-fill} -The... - -\endinput - -%% END psd-fill.tex diff --git a/Master/texmf-dist/doc/generic/pstricks/psd-help.tex b/Master/texmf-dist/doc/generic/pstricks/psd-help.tex deleted file mode 100644 index 0c4bf708ab0..00000000000 --- a/Master/texmf-dist/doc/generic/pstricks/psd-help.tex +++ /dev/null @@ -1,332 +0,0 @@ -%% BEGIN psd-help.tex - -\appendix\part*{Help} - -\Section{Boxes\label{S-boxes}} - -Many of the PSTricks macros have an argument for text that is processed in -restricted horizontal mode (in \LaTeX{} parlance, LR-mode) and then transformed -in some way. This is always the macro's last argument, and it is written -"{<stuff>}" in this \emph{User's Guide}. Examples are the framing, rotating, -scaling, positioning and node macros. I will call these ``LR-box'' macros, and -use framing as the leading example in the discussion below. - -In restricted horizontal mode, the input, consisting of regular characters and -boxes, is made into one (long or short) line. There is no line-breaking, nor -can there be vertical mode material such as an entire displayed equation. -However, the fact that you can include another box means that this isn't -really a restriction. - -For one thing, alignment environments such as "\halign" or \LaTeX's "tabular" -are just boxes, and thus present no problem. Picture environments and the box -macros themselves are also just boxes. Actually, there isn't a single PSTricks -command that cannot be put directly in the argument of an LR-box macro. -However, entire paragraphs or other vertical mode material such as displayed -equations need to be nested in a "\vbox" or \LaTeX{} "\parbox" or "minipage". -\LaTeX{} users should see "fancybox.sty" and its documentation, "fancybox.doc", -for extensive tips and trick for using LR-box commands. - -The PSTricks LR-box macros have some features that are not found in most other -LR-box macros, such as the standard \LaTeX{} LR-box commands. - -With \LaTeX{} LR-box commands, the contents is always processed in text mode, -even when the box occurs in math mode. PSTricks, on the other hand, preserves -math mode, and attempts to preserve the math style as well. \TeX{} has four -math styles: text, display, script and scriptscript. Generally, if the box -macro occurs in displayed math (but not in sub- or superscript math), the -contents are processed in display style, and otherwise the contents are -processed in text style (even here the PSTricks macros can make mistakes, but -through no fault of their own). If you don't get the right style, explicitly -include a "\textstyle", "\displaystyle", "\scriptstyle" or -"\scriptscriptstyle" command at the beginning of the box macro's argument. - - In case you want your PSTricks LR-box commands to treat math in the same as -your other LR-box commands, you can switch this feature on and off with the -commands -\begin{Ex} - \object \psmathboxtrue - \object \psmathboxfalse -\end{Ex} - -You can have commands (such as, but not restricted to, the math style -commands) automatically inserted at the beginning of each LR-box using the - \Mac \everypsbox{commands} -command.\footnote{This is a token register.} - -If you would like to define an LR-box environment <name> from an LR-box -command <cmd>, use - \Mac \pslongbox{name}{cmd} -For example, after -\begin{LVerbatim} - \pslongbox{MyFrame}{\psframebox} -\end{LVerbatim} -you can write -\begin{LVerbatim} - \MyFrame <stuff>\endMyFrame -\end{LVerbatim} -instead of -\begin{LVerbatim} - \psframebox{<stuff>} -\end{LVerbatim} -Also, \LaTeX{} users can write -\begin{LVerbatim} - \begin{MyFrame} <stuff>\end{MyFrame} -\end{LVerbatim} -It is up to you to be sure that <cmd> is a PSTricks LR-box command; if it -isn't, nasty errors can arise. - -Environments like have nice properties: -\begin{itemize} - \item The syntax is clearer when <stuff> is long. - \item It is easier to build composite LR-box commands. For example, here is -a framed minipage environment for \LaTeX: -\begin{LVerb} - \pslongbox{MyFrame}{\psframebox} - \newenvironment{fminipage}% - {\MyFrame\begin{minipage}}% - {\end{minipage}\endMyFrame} -\end{LVerb} - \item You include verbatim text and other "\catcode" tricks in <stuff>. -\end{itemize} - -The rest of this section elaborates on the inclusion of verbatim text in -LR-box environments and commands, for those who are interested. "fancybox.sty" -also contains some nice verbatim macros and tricks, some of which are useful -for LR-box commands. - -The reason that you cannot normally include verbatim text in an LR-box -commands argument is that \TeX{} reads the whole argument before processing the -"\catcode" changes, at which point it is too late to change the category -codes. If this is all Greek to you,\footnote{% -Incidentally, many foreign language macros, such as "greek.tex", use -"\catcode" tricks which can cause problems in LR-box macros.} then just try -this \LaTeX{} example to see the problem: -\begin{LVerbatim} - \psframebox{\verb+\foo{bar}+} -\end{LVerbatim} - -The LR-box environments defined with \n\pslongbox{} do not have this problem -because <stuff> is not processed as an argument. Thus, this works: -\begin{example} - \pslongbox{MyFrame}{\psframebox} - \MyFrame \verb+\foo{bar}+\endMyFrame -\end{example} - -The commands -\begin{Ex} - \object \psverbboxtrue - \object \psverbboxfalse -\end{Ex} -switch into and out of, respectively, a special PSTricks mode that lets you -include verbatim text in any LR-box command. For example: -\begin{example} - \psverbboxtrue - \psframebox{\verb+\foo{bar}+} -\end{example} -However, this is not as robust. You must explicitly group color commands in -<stuff>, and LR-box commands that usually ignore spaces that follow -"{<stuff>}" might not do so when \n\psverbboxtrue{} is in effect. - - -\Section{Tips and More Tricks\label{tips}} - -\faq{How do I rotate/frame this or that with \LaTeX?} - -See "fancybox.sty" and its documentation. - -\faq{How can I suppress the PostScript so that I can use my document with a -non-PostScript dvi driver?} - -Put the command - \Mac \PSTricksOff -at the beginning of your document. You should then be able to print or preview -drafts of your document (minus the PostScript, and perhaps pretty strange -looking) with any dvi driver. - - -\faq{How can I improve the rendering of halftones?} - -This can be an important consideration when you have a halftone in the -background and text on top. You can try putting -\begin{LVerb} - \pstverb{106 45 {dup mul exch dup mul add 1.0 exch sub} setscreen} -\end{LVerb} -before the halftone, or in a header (as in headers and footers, not as in -PostScript header files), if you want it to have an effect on every page. - -"setscreen" is a device-dependent operator. - -\faq{What special characters can be active with PSTricks?} - -\Section{Including PostScript code\label{S-raw}} - -To learn about the PostScript language, consult Adobe's \emph{PostScript -Language Tutorial and Cookbook} (the ``Blue Book''), or Henry McGilton and -Mary Campione's \emph{PostScript by Example} (1992). Both are published by -Addison-Wesley. You may find that the Appendix of the Blue Book, plus an -understanding of how the stack works, is all you need to write simple code for -computing numbers (e.g., to specify coordinates or plots using PostScript). - -You may want to define \TeX{} macros for including PostScript fragments in -various places. All \TeX{} macros are expanded before being passed on to -PostScript. It is not always clear what this means. For example, suppose you -write -\begin{LVerb} - \SpecialCoor - \def\mydata{23 43} - \psline(!47 \mydata add) - \psline(!47 \mydata\ add) - \psline(!47 \mydata~add) - \psline(!47 \mydata{} add) -\end{LVerb} -You will get a PostScript error in each of the \n\psline{} commands. To see -what the argument is expanding to, try use \TeX's "\edef" and "\show". E.g., -\begin{LVerb} - \def\mydata{23 43} - \edef\temp{47 \mydata add} - \show\temp - \edef\temp{47 \mydata\ add} - \show\temp - \edef\temp{47 \mydata~add} - \show\temp - \edef\temp{47 \mydata{} add} - \show\temp -\end{LVerb} -\TeX{} expands the code, assigns its value to "\temp", and then displays the -value of "\temp" on your console. Hit <return> to procede. You fill find that -the four samples expand, respectively, to: -\begin{LVerb} - 47 23 43add - 47 23 43\ add - 47 23 43\penalty \@M \ add - 47 23 43{} add -\end{LVerb} -All you really wanted was a space between the "43" and "add". The command -"\space" will do the trick: -\begin{LVerb} - \psline(!47 \mydata\space add) -\end{LVerb} - -You can include balance braces "{"~"}"; these will be passed on verbatim to -PostScript. However, to include an unbalanced left or right brace, you have to -use, respectively, -\begin{Ex} - \object \pslbrace - \object \psrbrace -\end{Ex} -Don't bother trying "\}" or "\{". - -Whenever you insert PostScript code in a PSTricks argument, the dictionary on -the top of the dictionary stack is "tx@Dict", which is PSTrick's main -dictionary. If you want to define you own variables, you have two options: -\begin{description} - \item[Simplest] Always include a "@" in the variable names, because PSTricks -never uses "@" in its variables names. You are at a risk of overflowing the -"tx@Dict" dictionary, depending on your PostScript interpreter. You are also -more likely to collide with someone else's definitions, if there are multiple -authors contributing to the document. - \item[Safest] Create a dictionary named "TDict" for your scratch -computations. Be sure to remove it from the dictionary stack at the end of any -code you insert in an argument. E.g., -\begin{LVerb} - TDict 10 dict def TDict begin <your code> end -\end{LVerb} -\end{description} - -\section{Troubleshooting\label{troubleshooting}} -\setcounter{faq}{0} - -\faq{Why does the document bomb in the printer when the first item in a -\LaTeX{} file is a float?} - -When the first item in a \LaTeX{} file is a float, "\special"'s in the preamble -are discarded. In particular, the "\special" for including PSTricks's header -file is lost. The workaround is to but something before the float, or to -include the header file by a command-line option with your dvi-to-ps driver. - -\faq{I converted a \texttt{.dvi} file to PostScript, and then mailed it to a -colleague. It prints fine for me but bombs on her printer.} - -Here is the most likely (but not the only) cause of this problem. The -PostScript files you get when using PSTricks can contain long lines. This -should be acceptable to any proper PostScript interpreter, but the lines can -get chopped when mailing the file. There is no way to fix this in PSTricks, -but you can make a point of wrapping the lines of your PostScript files when -mailing them. E.g., on UNIX you can use "uuencode" and "uudecode", or you can -use the following AWK script to wrap the lines: -\begin{LVerb} - #! /bin/sh - # This script wraps all lines - # Usage (if script is named wrap): - # wrap < infile > outfile - awk ' - BEGIN { - N = 78 # Max line length - } - { if (length($0)<=N) - print - else { - currlength = 0 - for (i = 1; i <=NF; i++) { - if ((currlength = currlength + length($i) + 1) > N) { - printf "\n" - printf "%s", $i - currlength = length($i) - } - else - printf \ %s", $i - } - printf "\n" - } - } ' -\end{LVerb} - -\faq{The color commands cause extraneous vertical space to be inserted.} - -For example, this can happen if you start a \LaTeX{} "\parbox" or a "p{}" -column with a color command. The solution usually is to precede the color -command with "\leavevmode". - - -\faq{The color commands interfere with other color macros I use.} - -Try putting the command \Main\altcolormode{} at the beginning of your document. -This may or may not help. Be extra careful that the scope of color commands -does not extend across pages. This is generally a less robust color scheme. - -\faq{How do I stop floats from being the same color as surrounding material?} - -That's easy: Just put an explicit color command at the beginning of the float, -e.g., \n\black. - -\faq{When I use some color command in box macros or with \texttt{\string\setbox}, -the colors get all screwed up.} - -\label{colorboxproblems}% -If "\mybox" is a box register, and you write -\begin{LVerb} - \green Ho Hum. - \setbox\mybox=\hbox{Foo bar \blue fee fum} - Hi Ho. \red Diddley-dee - \box\mybox hum dee do -\end{LVerb} -then when "\mybox" is inserted, the current color is red and so "Foo bar" -comes out red (rather than green, which was the color in effect when the box -was set). The command that returns from \n\blue{} to the current color "green", -when the box is set, is executed after the "\hbox" is closed, which means that -"Hi Ho" is green, but "hum dee do" is still blue. - -This odd behavior is due to the fact that \TeX{} does not support color -internally, the way it supports font commands. The first thing to do is to -explicitly bracket any color commands inside the box. Second, be sure that the -current color is black when setting the box. Third, make other explicit color -changes where necessary if you still have problems. The color scheme invoked -by \n\altcolormode{} is slightly better behaved if you follow the first two -rules. - -Note that various box macros use "\setbox" and so these anomalies can arise -unexpectedly. - -\endinput - -%% END psd-help.tex diff --git a/Master/texmf-dist/doc/generic/pstricks/psd-node.tex b/Master/texmf-dist/doc/generic/pstricks/psd-node.tex deleted file mode 100644 index e6504ca8bf2..00000000000 --- a/Master/texmf-dist/doc/generic/pstricks/psd-node.tex +++ /dev/null @@ -1,1279 +0,0 @@ -%% BEGIN psd-node.tex - -\part{Nodes and Node Connections\label{P-nodes}} - -% This is a file marker for pst-node (e.g., \File{pst-node}), defined as a node: -\leavevmode -\marginpar{% - \leavevmode\lower 20pt\hbox{% - \hbox to0pt{\hbox to \linewidth{\hss\rnode{file}{\copy\filebox}\hss}\hss}% - \raise 10pt\hbox to \linewidth{\hss\large\bfseries\sffamily pst-node\hss}}}% -All the commands described in this part are contained in the file -"pst-node.tex" / "pst-node.sty". - -The node and node connection macros let you connect information and place -labels, without knowing the exact position of what you are connecting or of -where the lines should connect. These macros are useful for making graphs and -trees, mathematical diagrams, linguistic syntax diagrams, and connecting ideas -of any kind. They are the trickiest tricks in PSTricks! - -The node and node connection macros let you connect information and place -labels, without knowing the exact position of what you are connecting or where -the lines should connect. These macros are useful for making graphs and trees, -mathematical diagrams, linguistic syntax diagrams, and connecting ideas of any -kind. They are the trickiest tricks in PSTricks! - -There are three components to the node macros: -\begin{description} - \item[Node definitions] The node definitions let you assign a name and shape - to an object. See Section \ref{S-nodes}. - \item[Node connections] The node connections connect two nodes, identified - by their names. See Section \ref{S-nc}. - \item[Node labels] The node label commands let you affix labels to the node - connections. See Section \ref{S-nodelabels}. -\end{description} - -You can use these macros just about anywhere. The best way to position them -depends on the application. For greatest flexibility, you can use the nodes in -a \n\pspicture, positioning and rotating them with \n\rput. You can also use -them in alignment environments. "pst-node.tex" contains a special alignment -environment, \n\psmatrix, which is designed for positioning nodes in a grid, -such as in mathematical diagrams and some graphs. \n\psmatrix{} is described in -Section \ref{S-psmatrix}. "pst-node.tex" also contains high-level macros for -trees. These are described in Part \ref{P-trees}. - -But don't restrict yourself to these more obvious uses. For example: -\begin{example**} - \rnode{A}{% - \parbox{4cm}{\raggedright - I made the file symbol a node. Now I can draw an - arrow so that you know what I am talking about.}} - \ncarc[nodesep=8pt]{->}{A}{file} -\end{example**} - -\Section{Nodes\label{S-nodes}} - -Nodes have a name. a boundary and a center. - -\begin{Warning} -The name is for refering to the node when making node connections and labels. -You specify the name as an argument to the node commands. The name must -contain only letters and numbers, and must begin with a letter. Bad node names -can cause PostScript errors. -\end{Warning} - -The center of a node is where node connections point to. The boundary is for -determining where to connect a node connection. The various nodes differ in -how they determine the center and boundary. They also differ in what kind of -visable object they create. - -Here are the nodes: - -\begin{description} - -\mitem \rnode`[refpoint]'{name}{stuff} - - \n\rnode{} puts <stuff> in a box. The center of the node is <refpoint>, which -you can specify the same way as for \n\rput. - -\oitem \Rnode{name}{stuff} - - \n\Rnode{} also makes a box, but the center is set differently. If you align -\n\rnode's by their baseline, differences in the height and depth of the nodes -can cause connecting lines to be not quite parallel, such as in the following -example: -\begin{example**} - \Large - \rnode{A}{sp} \hskip 2cm \rnode{B}{Bit} - \ncline{A}{B} -\end{example**} -With \n\Rnode, the center is determined relative to the baseline: -\begin{example**} - \Large - \Rnode{A}{sp} \hskip 2cm \Rnode{B}{Bit} - \ncline{A}{B} -\end{example**} - -You can usually get by without fiddling with the center of the node, but to -modify it you set the -\begin{Ex} - \Par{href=num} - \Par{vref=dim} -\end{Ex} -parameters. In the horizontal direction, the center is located fraction -\p{href} from the center to the edge. E.g, if \p{href=-1}, the center is on -the left edge of the box. In the vertical direction, the center is located -distance \p{vref} from the baseline. The \p{vref} parameter is evaluated each -time \n\Rnode{} is used, so that you can use "ex" units to have the distance -adjust itself to the size of the current font (but without being sensitive to -differences in the size of letters within the current font). - -\mitem \pnode`\c~'{name} - - This creates a zero dimensional node at \c{}. - -\oitem \cnode`\c~'{radius}{name} - - This draws a circle. Here is an example with \n\pnode{} and \n\cnode: -\begin{MEx}(3,1.25) - \cnode(0,1){.25}{A} - \pnode(3,0){B} - \ncline{<-}{A}{B} -\end{MEx} - -\oitem \Cnode`\c~'{name} - - This is like \n\cnode, but the radius is the value of -\begin{Ex} - \Par{radius=dim} -\end{Ex} -This is convenient when you want many circle nodes of the same radius. - -\oitem \circlenode{name}{stuff} - - This is a variant of \n\pscirclebox{} that gives the node the shape of the -circle. - -\oitem \cnodeput`{angle}\c~'{name}{stuff} - - This is a variant of \n\cput{} that gives the node the shape of the -circle. That is, it is like -\begin{LVerb*} - \rput{<angle>}(<x>,<y>){\circlenode{<name>}{<stuff>}} -\end{LVerb*} - -\oitem \ovalnode{name}{stuff} - - This is a variant of \n\psovalbox{} that gives the node the shape of an -ellipse. Here is an example with \n\circlenode{} and \n\ovalnode: -\begin{example**} - \circlenode{A}{Circle} and \ovalnode{B}{Oval} - \ncbar[angle=90]{A}{B} -\end{example**} - - -\oitem \dianode{name}{stuff} - - This is like \n\diabox. - - -\oitem \trinode{name}{stuff} - - This is like \n\tribox. - -\begin{MEx}(4,3) - \rput[tl](0,3){\dianode{A}{Diamond}} - \rput[br](4,0){\trinode[trimode=L]{B}{Triangle}} - \nccurve[angleA=-135,angleB=90]{A}{B} -\end{MEx} - -\oitem \dotnode`\c~'{name} - - This is a variant of \n\psdot. For example: -\begin{MEx}(3,2) - \dotnode[dotstyle=triangle*,dotscale=2 1](0,0){A} - \dotnode[dotstyle=+](3,2){B} - \ncline[nodesep=3pt]{A}{B} -\end{MEx} - - -\oitem \fnode`\c~'{name} - - The "f" stands for ``frame''. This is like, but easier than, putting a -\n\psframe{} in an \n\rnode. -\begin{MEx}(3,2) - \fnode{A} - \fnode*[framesize=1 5pt](2,2){B} - \ncline[nodesep=3pt]{A}{B} -\end{MEx} -There are two differences between \n\fnode{} and \n\psframe: -\begin{itemize} - \item There is a single (optional) coordinate argument, that gives the - \emph{center} of the frame. - \item The width and height of the frame are set by the -\begin{Ex} - \Par{framesize=dim1 `dim2'} -\end{Ex} - parameter. If you omit <dim2>, you get a square frame. -\end{itemize} - -\end{description} - - -\Section{Node connections\label{S-nc}} - -All the node connection commands begin with "nc", and they all have the same -syntax:\footnote{% -The node connections can be used with \n\pscustom. The beginning of the node -connection is attached to the current point by a straight line, as with -\n\psarc.}$^,$\footnote{% -See page \protect\pageref{S-SpecialCoor} if you want to use the nodes as -coordinates in other PSTricks macros.} -\begin{LVerb*} - \<nodeconnection>[<par>]{<arrows>}{<nodeA>}{<nodeB>} -\end{LVerb*} -A line of some sort is drawn from <nodeA> to <nodeB>. Some of the node -connection commands are a little confusing, but with a little experimentation -you will figure them out, and you will be amazed at the things you can do. -When we refer to the "A" and "B" nodes below, we are referring only to the -order in which the names are given as arguments to the node connection -macros.\footnote{% -When a node name cannot be found on the same page as the node connection -command, you get either no node connection or a nonsense node connection. -However, \TeX{} will not report any errors.} - -The node connections use many of the usual graphics parameters, plus a few -special ones. Let's start with one that applies to all the node connections: -\begin{Ex} - \Par{nodesep=dim} -\end{Ex} -\p{nodesep} is the border around the nodes that is added for the purpose of -determining where to connect the lines. - -For this and other node connection parameters, you can set different values -for the two ends of the node connection. Set the parameter \p{nodesepA} for -the first node, and set \p{nodesepB} for the second node. - -The first two node connections draw a line or arc directly between the two -nodes: -\begin{description} - -\oitem \ncline`{arrows}'{nodeA}{nodeB} - -This draws a straight line between the nodes. For example: -\begin{MEx}(4,3) - \rput[bl](0,0){\rnode{A}{Idea 1}} - \rput[tr](4,3){\rnode{B}{Idea 2}} - \ncline[nodesep=3pt]{<->}{A}{B} -\end{MEx} - -\oitem \ncarc`{arrows}'{nodeA}{nodeB} - -This connects the two nodes with an arc. -\begin{MEx}[-.5,-.5](3.5,2.5) - \cnodeput(0,0){A}{X} - \cnodeput(3,2){B}{Y} - \psset{nodesep=3pt} - \ncarc{->}{A}{B} - \ncarc{->}{B}{A} -\end{MEx} -The angle between the arc and the line between the two nodes is\footnote{% -Rather than using a true arc, \n\ncarc{} actually draws a bezier curve. When -connecting two circular nodes using the default parameter values, the curve -will be indistinguishable from a true arc. However, \n\ncarc{} is more -flexible than an arc, and works right connecting nodes of different shapes and -sizes. You can set \p{arcangleA} and \p{arcangleB} separately, and you can -control the curvature with the \p{ncurv} parameter, which is described on page -\pageref{p+ncurv}.} -\begin{Ex} - \Par{arcangle=angle} -\end{Ex} - -\end{description} - -\n\ncline{} and \n\ncarc{} both determine the angle at which the node -connections join by the relative position of the two nodes. With the next -group of node connections, you specify one or both of the angles in absolute -terms, by setting the -\begin{Ex} - \Par{angle=angle} -\end{Ex} -(and \p{angleA} and \p{angleB}) parameter. - -You also specify the length of the line segment where the node connection -joins at one or both of the ends (the ``arms'') by setting the -\begin{Ex} - \Par{arm=dim} -\end{Ex} -(and \p{armA} and \p{armB}) parameter. - -These node connections all consist of several line segments, including the -arms. The value of \p{linearc} is used for rounding the corners. - -Here they are, starting with the simplest one: - -\begin{description} - -\oitem \ncdiag`{arrows}'{nodeA}{nodeB} - -An arm is drawn at each node, joining at angle \p{angleA} or \p{angleB}, -and with a length of \p{armA} or \p{armB}. Then the two arms are connected -by a straight line, so that the whole line has three line segments. -For example: -\begin{MEx}(4,3) - \rput[tl](0,3){\rnode{A}{\psframebox{Node A}}} - \rput[br](4,0){\ovalnode{B}{Node B}} - \ncdiag[angleA=-90, angleB=90, arm=.5, linearc=.2]{A}{B} -\end{MEx} - -You can also set one or both of the arms to zero length. For example, if you -set \p{arm=0}, the nodes are connected by a straight line, but you get to -determine where the line connects (whereas the connection point is determined -automatically by \n\ncline). Compare this use of \n\ncdiag{} with \n\ncline{} -in the following example: -\begin{MEx}[0,-.5](4,2.5) - \rput[r](4,1){\ovalnode{R}{Root}} - \cnodeput(1,2){A}{XX} - \cnodeput(1,0){B}{YY} - \ncdiag[angleB=180, arm=0]{<-}{A}{R} - \ncline{<-}{B}{R} -\end{MEx} -(Note that in this example, the default value \p{angleA=0} is used.) - -\oitem \ncdiagg`{arrows}'{nodeA}{nodeB} - -\n\ncdiagg{} is similar to \n\ncdiag, but only the arm for node A is drawn. -The end of this arm is then connected directly to node B. Compare -\n\ncdiagg{} with \n\ncdiag{} when \p{armB=0}: -\begin{MEx}[-.5,-1](3.5,1) - \cnode(0,0){12pt}{a} - \rput[l](3,1){\rnode{b}{H}} - \rput[l](3,-1){\rnode{c}{T}} - \ncdiagg[angleA=180, armA=1.5, nodesepA=3pt]{b}{a} - "\nbput[npos=1.2]{\texttt{\string\ncdiagg}} - \ncdiag[angleA=180, armA=1.5, armB=0, nodesepA=3pt]{c}{a} - "\naput[npos=1.2]{\texttt{\string\ncdiag}} -\end{MEx} - - You can use \n\ncdiagg{} with \p{armA=0} if you want a straight line that -joins to node A at the angle you specify, and to node B at an angle that is -determined automatically. - -\oitem \ncbar`{arrows}'{nodeA}{nodeB} - - This node connection consists of a line with arms dropping ``down'', at -right angles, to meet two nodes at an angle \p{angleA}. Each arm is at least -of length \p{armA} or \p{armB}, but one may be need to be longer. -\begin{example**} - \rnode{A}{Connect} some \rnode{B}{words}! - \ncbar[nodesep=3pt,angle=-90]{<-**}{A}{B} - \ncbar[nodesep=3pt,angle=70]{A}{B} -\end{example**} - Generally, the whole line has three straight segments. - -\oitem \ncangle`{arrows}'{nodeA}{nodeB} - - - Now we get to a more complicated node connection. \n\ncangle{} typically -draws three line segments, like \n\ncdiag. However, rather than fixing the -length of arm A, we adjust arm A so that the line joining the two arms meets -arm A at a right angle. For example: -\begin{MEx}(4,3) - \rput[tl](0,3){\rnode{A}{\psframebox{Node A}}} - \rput[br](4,0){\ovalnode{B}{Node B}} - \ncangle[angleA=-90,angleB=90,armB=1cm]{A}{B} -\end{MEx} -Now watch what happens when we change \p{angleA}: -\begin{MEx}(4,3) - \rput[tl](0,3){\rnode{A}{\psframebox{Node A}}} - "\nput[labelsep=0]{-70}{A}{% - " \psarcn(0,0){.4cm}{0}{-70} - " \uput{.4cm}[-35](0,0){\texttt{angleA}}} - \rput[br](4,0){\ovalnode{B}{Node B}} - \ncangle[angleA=-70,angleB=90,armB=1cm,linewidth=1.2pt]{A}{B} - "\nput[labelsep=0]{90}{B}{% - " \rput[bl](2pt,1pt){% - " \valign{% - " \vfil#\vfil\cr - " \hbox{\psscaleboxto(.3,.95cm){\}}}\cr% - " \hbox{\kern 1pt{\texttt{armB}}}\cr}}} - "\ncput[nrot=:U,npos=1]{\psframe[dimen=middle](0,0)(.35,.35)} -\end{MEx} - -\n\ncangle{} is also a good way to join nodes by a right angle, with just two -line segments, as in this example: -\begin{MEx}(4,2) - \rput[tl](0,2){\rnode{A}{\psframebox{Node A}}} - \rput[br](4,0){\ovalnode{B}{Node B}} - \ncangle[angleB=90, armB=0, linearc=.5]{A}{B} -\end{MEx} - -\oitem \ncangles`{arrows}'{nodeA}{nodeB} - - \n\ncangles{} is similar to \n\ncangle, but the length of arm A is fixed by -he \p{armA} parameter. Arm A is connected to arm B by two line segments that -eet arm A and each other at right angles. The angle at which they join arm B, -and the length of the connecting segments, depends on the positions of the two -arms. \n\ncangles{} generally draws a total of four line segments.\footnote{% -Hence there is one more angle than \n\ncangle, and hence the "s" in -\n\ncangles.} -For example: -\begin{MEx}(4,4) - \rput[tl](0,4){\rnode{A}{\psframebox{Node A}}} - \rput[br](4,0){\ovalnode{B}{Node B}} - \ncangles[angleA=-90, armA=1cm, armB=.5cm, linearc=.15]{A}{B} -\end{MEx} - -Let's see what happens to the previous example when we change \p{angleB}: -\begin{MEx}(4,4) - \rput[tl](0,4){\rnode{A}{\psframebox{Node A}}} - \rput[br](4,0){\ovalnode{B}{Node B}} - \ncangles[angleA=-90, angleB=135, armA=1cm, armB=.5cm, - linearc=.15]{A}{B} - "\nput[labelsep=0]{-90}{A}{% - " \psarcn(0,0){.4cm}{0}{-90} - " \uput{.4cm}[-45](0,0){\texttt{angleA}} - " \rput[tr](-2pt,0){% - " \valign{% - " \vfil#\vfil\cr - " \hbox{\texttt{armA}\kern 1pt}\cr - " \hbox{\psscaleboxto(.28,.95cm){\{}}\cr% - " \cr}}} - "\nput[labelsep=0]{135}{B}{% - " \psarc(0,0){.4cm}{0}{133} - " \uput{.4cm}[50.5](0,0){\texttt{angleB}} - " } - "\ncput[nrot=:L,npos=2]{\psline(0,-.35)(-.35,-.35)(-.35,0)} - "\ncput[npos=3.5]{% - " \rput[r](-.8,0){\rnode{arm}{\texttt{armB}}} - " \pnode{brak}}% - "\ncline[nodesep=3pt]{->}{arm}{brak} -\end{MEx} - -\oitem \ncloop`{arrows}'{nodeA}{nodeB} - - \n\ncloop{} is also in the same family as \n\ncangle{} and \n\ncangles, but -now typically 5 line segments are drawn. Hence, \n\ncloop{} can reach around -to opposite sides of the nodes. The lengths of the arms are fixed by \p{armA} -and \p{armB}. Starting at arm A, \n\ncloop{} makes a 90 degree turn to the -left, drawing a segment of length -\begin{Ex} - \Par{loopsize=dim} -\end{Ex} -This segment connects to arm B the way arm A connects to arm B with \n\ncline; -that is, two more segments are drawn, which join the first segment and each -other at right angles, and then join arm B. For example: -\begin{example**} - "\vrule width 0pt height 1cm - \rnode{a}{\psframebox{\Huge A loop}} - \ncloop[angleB=180,loopsize=1,arm=.5,linearc=.2]{->}{a}{a} - "\ncput[npos=3.5,nrot=:U]{\psline{|<->|}(.5,-.2)(-.5,-.2)} - "\nbput[npos=3.5,nrot=:D,labelsep=.35cm]{{\tt loopsize}} - "\kern .5cm -\end{example**} -In this example, node A and node B are the same node! You can do this with all -the node connections (but it doesn't always make sense). - -Here is an example where \n\ncloop{} connects two different nodes: -\begin{example**} - \parbox{3cm}{% - \rnode{A}{\psframebox{\large\textbf{Begin}}} - \vspace{1cm}\hspace*{\fill} - \rnode{B}{\psframebox{\large\textbf{End}}} - \ncloop[angleA=180,loopsize=.9,arm=.5,linearc=.2]{->}{A}{B}} - "\ncput[npos=1.5,nrot=:U]{\psline{|<->|}(.45,-.2)(-.45,-.2)} - "\nbput[npos=1.5,nrot=:D,labelsep=.35cm]{\texttt{loopsize}} - "\kern .5cm -\end{example**} - -\end{description} - -The next two node connections are a little different from the rest. - -\begin{description} -\oitem \nccurve`{arrows}'{nodeA}{nodeB} - - \n\nccurve{} draws a bezier curve between the nodes. -\begin{MEx}(4,3) - \rput[bl](0,0){\rnode{A}{\psframebox{Node A}}} - \rput[tr](4,3){\ovalnode{B}{Node B}} - \nccurve[angleB=180]{A}{B} -\end{MEx} -You specify the angle at which the curve joins the nodes by setting the -\p{angle} (and \p{angleA} and \p{angleB}) parameter. The distance to the -control points is set with the -\begin{Ex} - \Par{ncurv=num} -\end{Ex} -(and \p{ncurvA} and \p{ncurvB}) parameter. A lower number gives a tighter -curve. (The distance between the beginning of the arc and the first control -point is one-half \p{ncurvA} times the distance between the two endpoints.) - -\oitem \nccircle`{arrows}'{node}{radius} - -\n\nccircle{} draws a circle, or part of a circle, that, if complete, would -pass through the center of the node counterclockwise, at an angle of -\p{angleA}. -\begin{example**} - "\vrule width 0pt height 1.4cm - \rnode{A}{\textbf{back}} - \nccircle[nodesep=3pt]{->}{A}{.7cm} - \kern 5pt -\end{example**} -\n\nccircle{} can only connect a node to itself; it is the only node -connection with this property. \n\nccircle{} is also special because it has an -additional argument, for specifying the radius of the circle. - -\end{description} - -The last two node connections are also special. Rather than connecting the -nodes with an open curve, they enclose the nodes in a box or curved box. You -can think of them as variants of \n\ncline{} and \n\ncarc. In both cases, the -half the width of the box is -\begin{Ex} - \Par{boxsize=dim} -\end{Ex} -You have to set this yourself to the right size, so that the nodes fit inside -the box. The \p{boxsize} parameter actually sets the \p{boxheight} and -\p{boxdepth} parameters. The ends of the boxes extend beyond the nodes by -\p{nodesepA} and \p{nodesepB}. - -\begin{description} - -\oitem \ncbox{nodeA}{nodeB} - \n\ncbox{} encloses the nodes in a box with straight sides. For example: -\begin{MEx}[0,-.5](4,2.5) - \rput[bl](.5,0){\rnode{A}{Idea 1}} - \rput[tr](3.5,2){\rnode{B}{Idea 2}} - \ncbox[nodesep=.5cm,boxsize=.6,linearc=.2, - linestyle=dashed]{A}{B} -\end{MEx} - -\oitem \ncarcbox{nodeA}{nodeB} - - \n\ncarcbox{} encloses the nodes in a curved box that is \p{arcangleA} away -from the line connecting the two nodes. -\begin{MEx}[0,-.5](4,2.5) - \rput[bl](.5,0){\rnode{A}{1}} - \rput[tr](3.5,2){\rnode{B}{2}} - \ncarcbox[nodesep=.2cm,boxsize=.4,linearc=.4, - arcangle=50]{<->}{A}{B} -\end{MEx} -The arc is drawn counterclockwise from node A to node B. - -\end{description} - -There is one other node connection parameter that applies to all the node -connections, except \n\ncarcbox: -\begin{Ex} - \Par{offset=dim} -\end{Ex} -(You can also set \p{offsetA} and \p{offsetB} independently.) This shifts the -point where the connection joins up by <dim> (given the convention that -connections go from left to right). - -There are two main uses for this parameter. First, it lets you make two -parallel lines with \n\ncline, as in the following example: -\begin{MEx}[-.5,-.5](3.5,2.5) - \cnodeput(0,0){A}{X} - \cnodeput(3,2){B}{Y} - \psset{nodesep=3pt,offset=4pt,arrows=->} - \ncline{A}{B} - \ncline{B}{A} -\end{MEx} - -Second, it lets you join a node connection to a rectangular node at a right -angle, without limiting yourself to positions that lie directly above, below, -or to either side of the center of the node. This is useful, for example, if -you are making several connections to the same node, as in the following -example: -\begin{example**} - \rnode{A}{Word1} and \rnode{B}{Word2} and \rnode{C}{Word3} - \ncbar[offsetB=4pt,angleA=-90,nodesep=3pt]{->}{A}{B} - \ncbar[offsetA=4pt,angleA=-90,nodesep=3pt]{->}{B}{C} -\end{example**} - -Sometimes you might be aligning several nodes, such as in a tree, and you want -to ends or the arms of the node connections to line up. This won't happen -naturally if the nodes are of different size, as you can see in this example: -\begin{MEx}[-.5,0](3.5,3) - "\psset{unit=.9} - \Huge - \cnode(1,3){4pt}{a} - \rput[B](0,0){\Rnode{b}{H}} - \rput[B](2,0){\Rnode{c}{a}} - \psset{angleA=90,armA=1,nodesepA=3pt} - \ncdiagg{b}{a} - \ncdiagg{c}{a} -\end{MEx} - -%%??? FIXME -If you set the \p{nodesep} or \p{arm} parameter to a negative value, PSTricks -will measure the distance to the beginning of the node connection or to the -end of the arm relative to the center of the node, rather than relative to the -boundary of the node or the beginning of the arm. Here is how we fix the -previous example: -\begin{MEx}[-.5,0](3.5,3) - "\psset{unit=.9} - \Huge - \cnode(1,3){4pt}{a} - \rput[B](0,0){\Rnode{b}{H}} - \rput[B](2,0){\Rnode{c}{a}} - \psset{angleA=90,armA=1,YnodesepA=12pt} - \ncdiagg{b}{a} - \ncdiagg{c}{a} -\end{MEx} -Note also the use of \n\Rnode. - -One more parameter trick: By using the \p{border} parameter, you can create -the impression that one node connection passes over another. - -The node connection commands make interesting drawing tools as well, as an -alternative to \n\psline{} for connecting two points. There are variants of -the node connection commands for this purpose. Each begins with "pc" (for -``point connection'') rather than "nc". E.g., -\begin{LVerb} - \pcarc{<->}(3,4)(6,9) -\end{LVerb} -gives the same result as -\begin{LVerb} - \pnode(3,4){A} - \pnode(6,9){B} - \pcarc{<->}{A}{B} -\end{LVerb} - -Only \n\nccircle{} does not have a "pc" variant: -\begin{center} -\def\oitem{\GetMacroDef\oitemi} -\def\oitemi#1{\addtoquickref{object}{#1}{\MainFont\Main#1}} -\addtolength{\tabcolsep}{8pt} -\begin{tabular}{ll} - \emph{Command} & \emph{Corresponds to:}\\ - - \oitem \pcline`{arrows}'\c1\c2 - & \n\ncline\\ - - \oitem \pccurve`{arrows}'\c1\c2 - & \n\nccurve\\ - - \oitem \pcarc`{arrows}'\c1\c2 - & \n\ncarc\\ - - \oitem \pcbar`{arrows}'\c1\c2 - & \n\ncbar\\ - - \oitem \pcdiag`{arrows}'\c1\c2 - & \n\ncdiag\\ - - \oitem \pcdiagg`{arrows}'\c1\c2 - & \n\ncdiagg\\ - - \oitem \pcangle`{arrows}'\c1\c2 - & \n\ncangle\\ - - \oitem \pcangles`{arrows}'\c1\c2 - & \n\ncangles\\ - - \oitem \pcloop`{arrows}'\c1\c2 - & \n\ncloop\\ - - \oitem \pcbox\c1\c2 - & \n\ncbox\\ - - \oitem \pcarcbox\c1\c2 - & \n\ncarcbox -\end{tabular} -\end{center} - - -\Section{Node connections labels: I\label{S-nodelabels}} - -Now we come to the commands for attaching labels to the node connections. The -label command must come right after the node connection to which the label is -to be attached. You can attach more than one label to a node connection, and a -label can include more nodes. - -The node label commands must end up on the same \TeX{} page as the node -connection to which the label corresponds. - -There are two groups of connection labels, which differ in how they select the -point on the node connection. In this section we describe the first group: -\begin{Ex} - \object \ncput`*[par]'{stuff} - \object \naput`*[par]'{stuff} - \object \nbput`*[par]'{stuff} -\end{Ex} - -These three command differ in where the labels end up with respect to the line: -\begin{quote} -\begin{tabular}{ll} - \n\ncput & \emph{on} the line\\ - \n\naput & \emph{above} the line\\ - \n\nbput & \emph{below} the line -\end{tabular} -\end{quote} -(using the convention that node connections go from left to right). - -Here is an example: -\begin{MEx}[0,-1.5](3.5,1.5) - \cnode(0,0){.5cm}{root} - \cnode*(3,1.5){4pt}{A} - \cnode*(3,0){4pt}{B} - \cnode*(3,-1.5){4pt}{C} - \psset{nodesep=3pt} - \ncline{root}{A} - \naput{above} - \ncline{root}{B} - \ncput*{on} - \ncline{root}{C} - \nbput{below} -\end{MEx} - -\n\naput{} and \n\nbput{} use the same algorithm as \n\uput{} for displacing -the labels, and the distance beteen the line and labels is \p{labelsep} (at -least if the lines are straight). - -\n\ncput{} uses the same system as \n\rput{} for setting the reference -point. You change the reference point by setting the -\begin{Ex} - \Par{ref=ref} -\end{Ex} -parameter. - -Rotation is also controlled by a graphics parameter: -\begin{Ex} - \Par{nrot=rot} -\end{Ex} -<rot> can be in any of the forms suitable for \n\rput, and you can also use -the form -\begin{LVerb*} - {:<angle>} -\end{LVerb*} -The angle is then measured with respect to the node connection. E.g., if the -angle is "{:U}", then the label runs parallel to the node connection. Since -the label can include other put commands, you really have a lot of control -over the label position. - -The next example illustrates the use "{:<angle>}", the \p{offset} parameter, -and \n\pcline: -\begin{MEx}(4,2.3) - \pspolygon(0,0)(4,2)(4,0) - \pcline[offset=12pt]{|-|}(0,0)(4,2) - \ncput*[nrot=:U]{Length} -\end{MEx} - -Here is a repeat of an earlier example, now using "{:<angle>}": -\begin{MEx}[0,-1.5](3.5,1.5) - \cnode(0,0){.5cm}{root} - \cnode*(3,1.5){4pt}{A} - \cnode*(3,0){4pt}{B} - \cnode*(3,-1.5){4pt}{C} - \psset{nodesep=3pt,nrot=:U} - \ncline{root}{A} - \naput{above} - \ncline{root}{B} - \ncput*{on} - \ncline{root}{C} - \nbput{below} -\end{MEx} - -The position on the node connection is set by the -\begin{Ex} - \Par{npos=num} -\end{Ex} -parameter, roughly according to the following scheme: Each node connection has -potentially one or more segments, including the arms and connecting lines. -A number \p{npos} between 0 and 1 picks a point on the first segment from node -"A" to "B" (fraction \p{npos} from the beginning to the end of the segment), -a number between 1 and 2 picks a number on the second segment, and so on. - -Each node connection has its own default value of \p{npos}. If you leave the -\p{npos} parameter value empty (e.g., "[npos=]"), then the default is -substituted. This is the default mode. - -Here are the details for each node connection: -\begin{center} - \catcode`\@=11\setbox\@tempboxa=\hbox{1.5}% - \edef\t#1{\noexpand\hbox to \the\wd\@tempboxa{\noexpand\tt\noexpand\hss#1}} - \begin{tabular}{lccc} - \emph{Connection} & \emph{Segments} & \emph{Range} & \emph{Default}\\[2pt] - \n\ncline & 1 & $0\leq pos\leq 1$ & "0.5"\\ - \n\nccurve & 1 & $0\leq pos\leq 1$ & "0.5"\\ - \n\ncarc & 1 & $0\leq pos\leq 1$ & "0.5"\\ - \n\ncbar & 3 & $0\leq pos\leq 3$ & "1.5"\\ - \n\ncdiag & 3 & $0\leq pos\leq 3$ & "1.5"\\ - \n\ncdiagg & 2 & $0\leq pos\leq 2$ & "0.5"\\ - \n\ncangle & 3 & $0\leq pos\leq 3$ & "1.5"\\ - \n\ncangles & 4 & $0\leq pos\leq 4$ & "1.5"\\ - \n\ncloop & 5 & $0\leq pos\leq 5$ & "2.5"\\ - \n\nccircle & 1 & $0\leq pos\leq 1$ & "0.5"\\ - \n\ncbox & 4 & $0\leq pos\leq 4$ & "0.5"\\ - \n\ncarcbox & 4 & $0\leq pos\leq 4$ & "0.5" - \end{tabular} -\end{center} - -Here is an example: -\begin{MEx}(4,3) - \rput[tl](0,3){\rnode{A}{\psframebox{Node A}}} - \rput[br](3.5,0){\ovalnode{B}{Node B}} - \ncangles[angleA=-90,arm=.4cm,linearc=.15]{A}{B} - \ncput*{d} - \nbput[nrot=:D,npos=2.5]{par} -\end{MEx} - -With \n\ncbox{} and \n\ncarcbox, the segments run counterclockwise, starting -with the lower side of the box. Hence, with \n\nbput{} the label ends up -outside the box, and with \n\naput{} the label ends up inside the box. -\begin{MEx}[0,-.5](4,2.5) - \rput[bl](.5,0){\rnode{A}{1}} - \rput[tr](3.5,2){\rnode{B}{2}} - \ncarcbox[nodesep=.2cm,boxsize=.4,linearc=.4, - arcangle=50,linestyle=dashed]{<->}{A}{B} - \nbput[nrot=:U]{set} - \nbput[npos=2]{II} -\end{MEx} - -If you set the parameter -\begin{Ex} - \Par{shortput=none/nab/tablr/tab} -\end{Ex} -to "nab", then immediately following a node connection or another node -connection label you can use "^" instead of \n\naput{} and "_" instead of -\n\nbput. -\begin{MEx}[0,-1.5](3.5,1.5) - \cnode(0,0){.5cm}{root} - \cnode*(3,1.5){4pt}{A} - \cnode*(3,-1.5){4pt}{C} - \psset{nodesep=3pt,shortput=nab} - \ncline{root}{A}^{$x$} - \ncline{root}{C}_{$y$} -\end{MEx} -You can still have parameter changes with the short "^" and "_" forms. Another -example is given on page \pageref{nab-example}. - -If you have set \p{shortput=nab}, and then you want to use a true "^" or "_" -character right after a node connection, you must precede the "^" or "_" by -"{}" so that PSTricks does not convert it to "\naput" or "\nbput". - -You can change the characters that you use for the short form with the - \Mac \MakeShortNab{<char1>}{<char2>} -command.\footnote{% -You can also use \n\MakeShortNab{} if you want to use "^" and "_" with -non-standard category codes. Just invoke the command after you have made your -"\catcode" changes.} - -The \p{shortput=tablr} and \p{shortput=tab} options are described on pages -\pageref{tablr} and \pageref{tab}, respectively. - -\Section{Node connection labels: II} - -Now the second group of node connections: -\begin{Ex} - \object \tvput`*[par]'{stuff} - \object \tlput`*[par]'{stuff} - \object \trput`*[par]'{stuff} - \object \thput`*[par]'{stuff} - \object \taput`*[par]'{stuff} - \object \tbput`*[par]'{stuff} -\end{Ex} - -The difference between these commands and the "\n*put" commands is that these -find the position as an intermediate point between the centers of the nodes, -either in the horizontal or vertical direction. These are good for trees and -mathematical diagrams, where it can sometimes be nice to have the labels be -horizontally or vertically aligned. The "t" stands for ``tree''. - -You specify the position by setting the -\begin{Ex} - \Par{tpos=num} -\end{Ex} -parameter. - -\n\tvput, \n\tlput{} and \n\trput{} find the position that lies fraction -<tpos> in the \emph{vertical} direction from the upper node to the lower -node. \n\thput, \n\taput{} and \n\tbput{} find the position that lies fraction -<tpos> in the \emph{horizontal} direction from the left node to the right -node. -Then the commands put the label on or next to the line, as follows: -\begin{center} -\begin{tabular}{lll} - \emph{Command} & \emph{Direction} & \emph{Placement}\\[3pt] - \n\tvput & vertical & middle\\ - \n\tlput & vertical & left\\ - \n\trput & vertical & right\\ - \n\thput & horizontal & middle\\ - \n\taput & horizontal & above\\ - \n\tbput & horizontal & below -\end{tabular} -\end{center} - -Here is an example: -\begin{example*} - \[ - \setlength{\arraycolsep}{1.1cm} - \begin{array}{cc} - \Rnode{a}{(X-A)} & \Rnode{b}{A} \\[1.5cm] - \Rnode{c}{x} & \Rnode{d}{\tilde{X}} - \end{array} - \psset{nodesep=5pt,arrows=->} - \everypsbox{\scriptstyle} - \ncline{a}{c}\tlput{r} - \ncline{a}{b}\taput{u} - \ncline[linestyle=dashed]{c}{d}\tbput{b} - \ncline{b}{d}\trput{s} - " \everypsbox{} - " \begin{array}{cc} - " \rnode{a}{(X-A)} & \rnode{b}{a} \\[1.5cm] - " \rnode{c}{x} & \rnode{d}{\tilde{X}} - " \end{array} - " \psset{nodesep=5pt,arrows=->}\everypsbox{\scriptstyle} - " \ncline{a}{c}\nbput{r} - " \ncline{a}{b}\naput{u} - " \ncline[linestyle=dashed]{c}{d}\nbput{b} - " \ncline{b}{d}\naput{s} - \] -\end{example*} -On the left is the diagram with \n\tlput, \n\trput\, \n\tbput{} and \n\Rnode, -as shown in the code. On the right is the same diagram, but with \n\naput\, -\n\nbput{} and \n\rnode. - -These do not have a rotation argument or parameter. However, you can rotate -<stuff> in 90 degree increments using box rotations (e.g., \n\rotateleft). - -If you set \p{shortput=tablr}, then you can use the following single-character -abbreviations for the "t" put commands:\label{tablr} -\begin{center} - \begin{tabular}{rl} - \emph{Char.} & \emph{Short for:}\\[2pt] - "^" & \n\taput \\ - "_" & \n\tbput \\ - \DeleteShortMeta "<" & \n\tlput \\ - ">" & \n\trput - \end{tabular} -\end{center} - -You can change the character abbreviations with - \Mac \MakeShortTablr{<char1>}{<char2>}{<char3>}{<char4>} - -The "t" put commands, including an example of \p{shortput=tablr}, will be -shown further when we get to mathematical diagrams and trees. - -\begin{drivers} The node macros use \n\pstVerb{} and \n\pstverbscale. -\end{drivers} - -\Section{Attaching labels to nodes} - -The command - \Mac \nput`*[par]'{refangle}{name}{stuff} -affixes <stuff> to node <name>. It is positioned distance \p{labelsep} from -the node, in the direction <refangle> from the center of the node. The -algorithm is the same as for \n\uput. If you want to rotate the node, set the -\begin{Ex} - \Par{rot=rot} -\end{Ex} -parameter, where <rot> is a rotation that would be valid for \n\rput.% -\footnote{Not to be confused with the "nput" parameter.} -The position of the label also takes into account the \p{offsetA} -parameter. If \p{labelsep} is negative, then the distance is from the center -of the node rather than from the boundary, as with \p{nodesep}. - -Here is how I used \n\nput{} to mark an angle in a previous example: -\begin{MEx}(4,3) - \rput[br](4,0){\ovalnode{B}{Node B}} - \rput[tl](0,3){\rnode{A}{\psframebox{Node A}}} - \nput[labelsep=0]{-70}{A}{% - \psarcn(0,0){.4cm}{0}{-70} - \uput{.4cm}[-35](0,0){\texttt{angleA}}} - \ncangle[angleA=-70,angleB=90,armB=1cm,linewidth=1.2pt]{A}{B} - \ncput[nrot=:U,npos=1]{\psframe[dimen=middle](0,0)(.35,.35)} -\end{MEx} - -\Section{Mathematical diagrams and graphs\label{S-psmatrix}} - -For some applications, such as mathematical diagrams and graphs, it is useful -to arrange nodes on a grid. You can do this with alignment environments, such -as \TeX's "\halign"primitive, \LaTeX's "tabular" environment, and \AmS-\TeX's -"\matrix", but PSTricks contains its own alignment environment that is -especially adapted for this purpose: -\begin{Ex} - \object \psmatrix{} ... \string\endpsmatrix -\end{Ex} - -Here is an example -\begin{example**} - $ - \psmatrix[colsep=1cm,rowsep=1cm] - & A \\ - B & E & C \\ - & D & - \endpsmatrix - $ -\end{example**} - -As an alignment environment, \n\psmatrix{} is similar to \AmS-\TeX's -"\matrix". There is no argument for specifying the columns. Instead, you can -just use as many columns as you need. The entries are horizontally centered. -Rows are ended by "\\". \n\psmatrix{} can be used in or out of math mode. - -Our first example wasn't very interesting, because we didn't make use of the -nodes. Actually, each entry is a node. The name of the node in row <row> and -column <col> is "{<row>,<col>}", with no spaces. Let's see some node -connections: -\begin{example**} - $ - \psmatrix[colsep=1cm] - & X \\ - Y & Z - \endpsmatrix - \everypsbox{\scriptstyle}% - \psset{nodesep=3pt,arrows=->} - \ncline{1,2}{2,1} - \tlput{f} - \ncline{1,2}{2,2} - \trput{g} - \ncline[linestyle=dotted]{2,1}{2,2} - \tbput{h} - $ -\end{example**} - -You can include the node connections inside the \n\psmatrix, in the last entry -and right before \n\endpsmatrix. One advantage to doing this is that -\p{shortput=tab} is the default within a \n\psmatrix. -\begin{example**} - $ - \begin{psmatrix} - U \\ - & X\times_Z Y & X \\ - & Y & Z - \psset{arrows=->,nodesep=3pt} - \everypsbox{\scriptstyle} - \ncline{1,1}{2,2}_{y} - \ncline[doubleline=true,linestyle=dashed]{-}{1,1}{2,3}^{x} - \ncline{2,2}{3,2}<{q} - \ncline{2,2}{2,3}_{p} - \ncline{2,3}{3,3}>{f} - \ncline{3,2}{3,3}_{g} - \end{psmatrix} - $ -\end{example**} - -You can change the kind of nodes that are made by setting the -\begin{Ex} - \Par{mnode=type} -\end{Ex} -parameter. Valid types are "R", "r", "C", "f", "p", "circle", "oval", "dia", -"tri", "dot" and "none", standing for \n\Rnode, \n\rnode, \n\Cnode, \n\fnode, -\n\pnode, \n\circlenode, \n\ovalnode, \n\dotnode{} and no node, -respectively. Note that for circles, you use \p{mnode=C} and set the radius -with the \p{radius} parameter. - -For example:\label{nab-example} -\begin{example**} - \psmatrix[mnode=circle,colsep=1] - & A \\ - B & E & C \\ - & D & - \endpsmatrix - \psset{shortput=nab,arrows=->,labelsep=3pt} - \small - \ncline{2,2}{2,3}^[npos=.75]{a} - \ncline{2,2}{2,1}^{b} - \ncline{3,2}{2,1}^{c} - \ncarc[arcangle=-40,border=3pt]{3,2}{1,2} - _[npos=.3]{d}^[npos=.7]{e} - \ncarc[arcangle=12]{1,2}{2,1}^{f} - \ncarc[arcangle=12]{2,1}{1,2}^{g} -\end{example**} - -Note that a node is made only for the non-empty entries. You can also specify -a node for the empty entries by setting the -\begin{Ex} - \Par{emnode=type} -\end{Ex} -parameter. - -You can change parameters for a single entry by starting this entry with the -parameter changes, enclosed in square brackets. Note that the changes affect -the way the node is made, but not contents of the entry (use \n\psset{} for -this purpose). For example: -\begin{example**} - $ - \psmatrix[colsep=1cm] - & [mnode=circle] X \\ - Y & Z - \endpsmatrix - \psset{nodesep=3pt,arrows=->} - \ncline{1,2}{2,1} - \ncline{1,2}{2,2} - \ncline[linestyle=dotted]{2,1}{2,2} - $ -\end{example**} -If you want your entry to begin with a "[" that is not meant to indicate -parameter changes, the precede it by "{}". - -You can assign your own name to a node by setting the -\begin{Ex} - \Par{name=<name>} -\end{Ex} -parameter at the beginning of the entry, as described above. You can still -refer to the node by "{<row>,<col>}", but here are a few reasons for giving -your own name to a node: -\begin{itemize} - \item The name may be easier to keep track of; - \item Unlike the "{<row>,<col>}" names, the names you give remain valid - even when you add extra rows or columns to your matrix. - \item The names remain valid even when you start a new \n\psmatrix{} that - reuses the "{<row>,<col>}" names. -\end{itemize} - - -Here a few more things you should know: -\begin{itemize} - \item The baselines of the nodes pass through the centers of the - nodes. \n\psmatrix{} achieves this by setting the -\begin{Ex} - \Par{nodealign=true/false} -\end{Ex} -parameter to "true". You can also set this parameter outside of \n\psmatrix{} -when you want this kind of alignment. - - \item You can left or right-justify the nodes by setting the -\begin{Ex} - \Par{mcol=l/r/c} -\end{Ex} -parameter. "l", "r" and "c" stand for "left", "right" and "center", -respectively. - - \item The space between rows and columns is set by the -\begin{Ex} - \Par{rowsep=dim} - \Par{colsep=dim} -\end{Ex} -parameters. - - \item If you want all the nodes to have a fixed width, set -\begin{Ex} - \Par{mnodesize=dim} -\end{Ex} -to a positive value. - - \item If \n\psmatrix{} is used in math mode, all the entries are set in math - mode, but you can switch a single entry out of math mode by starting and - ending the entry with "$". - - \item The radius of the "c" \p{mnode} (corresponding to \n\cnode) is set by -the \p{radius} parameter. - - \item Like in \LaTeX, you can end a row with "\\[<dim>]" to insert an extra - space <dim> between rows. - - \item The command "\psrowhookii" is executed, if defined, at the beginning of - every entry in row "ii" (row 2), and the command "\pscolhookv" is executed at - athe beginning of every entry in column "v" (etc.). You can use these hooks, - for example, to change the spacing between two columns, or to use a special - \p{mnode} for all the entries in a particular row. - - \item An entry can itself be a node. You might do this if you want an entry - to have two shapes. - - \item If you want an entry to stretch across several (<int>) columns, use the - \Mac \psspan{int} - \emph{at the end of the entry}. This is like Plain \TeX's \n\multispan, or - \LaTeX's \n\multicolumn, but the template for the current column (the first - column that is spanned) is still used. If you want wipe out the template as - well, use "\multispan{<int>}" \emph{at the beginning of the entry} instead. - If you just want to wipe out the template, use "\omit" before the entry. - - \item \n\psmatrix{} can be nested, but then all node connections and other - references to the nodes in the "{<row>,<col>}" form for the nested matrix - \emph{must go inside} the \n\psmatrix. This is how PSTricks decides which - matrix you are referring to. It is still neatest to put all the node - connections towards the end; just be sure to put them before \n\endpsmatrix. - Be careful also not to refer to a node until it actually appears. The whole - matrix can itself go inside a node, and node connections can be made as - usual. This is not the same as connecting nodes from two different - \n\psmatrix's. To do this, you must give the nodes names and refer to them - by these names. - -\end{itemize} - -\section{Obsolete put commands} - -This is old documentation, but these commands will continue to be supported. - -There is also an obsolete command \n\Lput\MainIndex\Lput{} for putting labels -next to node connections. The syntax is -\begin{LVerb*} - \Lput{<labelsep>}[<refpoint>]{<rotation>}(<pos>){<stuff>} -\end{LVerb*} -It is a combination of \n\Rput{} and \n\lput, equivalent to -\begin{LVerb*} - \lput(<pos>){\Rput{<labelsep>}[<refpoint>]{<rotation>}(0,0){<stuff>}} -\end{LVerb*} -\n\Mput\MainIndex\Mput{} is a short version of \n\Lput{} with no -"{<rotation>}" or "(<pos>)" argument. \n\Lput{} and \n\Mput{} remain part of -PSTricks only for backwards compatibility. - -Here are the node label commands: -\begin{description} - -\mitem \lput`*[refpoint]{rotation}'(pos){stuff} - -The "l" stands for ``label''. Here is an example illustrating the use of the -optional star and ":<angle>" with \n\lput, as well as the use of the -\p{offset} parameter with \n\pcline: -\begin{MEx}(4,2.3) - \pspolygon(0,0)(4,2)(4,0) - \pcline[offset=12pt]{|-|}(0,0)(4,2) - \lput*{:U}{Length} -\end{MEx} -(Remember that with the "put" commands, you can omit the coordinate if you -include the angle of rotation. You are likely to use this feature with the -node label commands.) - -With \n\lput{} and \n\rput, you have a lot of control over the position of the -label. E.g., -\begin{MEx}(4,2) - \pcline(0,0)(4,2) - \lput{:U}{\rput[r]{N}(0,.4){label}} -\end{MEx} -puts the label upright on the page, with right side located .4 centimeters -``above'' the position ".5" of the node connection (above if the node -connection points to the right). However, the \n\aput{} and \n\bput{} commands -described below handle the most common cases without \n\rput.\footnote{% -There is also an obsolete command \n\Lput\MainIndex\Lput{} for putting labels -next to node connections. The syntax is -\begin{LVerb*} - \Lput{<labelsep>}[<refpoint>]{<rotation>}(<pos>){<stuff>} -\end{LVerb*} -It is a combination of \n\Rput{} and \n\lput, equivalent to -\begin{LVerb*} - \lput(<pos>){\Rput{<labelsep>}[<refpoint>]{<rotation>}(0,0){<stuff>}} -\end{LVerb*} -\n\Mput\MainIndex\Mput{} is a short version of \n\Lput{} with no -"{<rotation>}" or "(<pos>)" argument. \n\Lput{} and \n\Mput{} remain part of -PSTricks only for backwards compatibility.} - -\mitem \aput`*[labelsep]{angle}'(pos){stuff} - - <stuff> is positioned distance \n\pslabelsep{} \emph{above} the node -connection, given the convention that node connections point to the right. -"\aput" is a node-connection variant of \n\uput. For example: -\begin{MEx}(4,2) - \pspolygon(0,0)(4,2)(4,0) - \pcline[linestyle=none](0,0)(4,2) - \aput{:U}{Hypotenuse} -\end{MEx} - -\mitem \bput`*[labelsep]{angle}'(pos){stuff} - - This is like \n\aput, but <stuff> is positioned \emph{below} the node -connection. - -\end{description} - - It is fairly common to want to use the default position and rotation with -these node connections, but you have to include at least one of these -arguments. Therefore, PSTricks contains some variants: -\begin{Ex} - \object \mput`*[refpoint]'{stuff} - \object \Aput`*[labelsep]'{stuff} - \object \Bput`*[labelsep]'{stuff} -\end{Ex} -of \n\lput, \n\aput{} and \n\bput, respectively, that have no angle or -positioning argument. For example: -\begin{MEx}(4,2) - \cnode*(0,0){3pt}{A} - \cnode*(4,2){3pt}{B} - \ncline[nodesep=3pt]{A}{B} - \mput*{1} -\end{MEx} -Here is another: -\begin{MEx}(4,2) - \pcline{<->}(0,0)(4,2) - \Aput{Label} -\end{MEx} - -\endinput - -%% END psd-node.tex diff --git a/Master/texmf-dist/doc/generic/pstricks/psd-para.tex b/Master/texmf-dist/doc/generic/pstricks/psd-para.tex deleted file mode 100644 index d644733a5dc..00000000000 --- a/Master/texmf-dist/doc/generic/pstricks/psd-para.tex +++ /dev/null @@ -1,345 +0,0 @@ -%% BEGIN psd-para.tex - -\part{More graphics parameters} - -The graphics parameters described in this part are common to all or most of -the graphics objects. - -\Section{Coordinate systems} - -The following manipulations of the coordinate system apply only to pure -graphics objects. - -A simple way to move the origin of the coordinate system to \c{} is with the -\begin{Ex} - \Par{origin=\{coor\}}({0pt,0pt}) -\end{Ex} -This is the one time that coordinates \emph{must} be enclosed in curly brackets -"{}" rather than parentheses "()". - -A simple way to switch swap the axes is with the -\begin{Ex} - \Par{swapaxes=true} -\end{Ex} -parameter. E.g., you might change your mind on the orientation of a plot after -generating the data. - -\Section{Line styles\label{S-linestyles}} - -The following graphics parameters (in addition to \p{linewidth} and -\p{linecolor}) determine how the lines are drawn, whether they be open or -closed curves. -\begin{description}\raggedright - -\pitem[linestyle=style] - Valid styles are "none", "solid", "dashed" and "dotted". - -\pitem[dash=dim1 dim2] - The <black-white> dash pattern for the "dashed" line style. For example: -\begin{MEx}(4,2) - \psellipse[linestyle=dashed,dash=3pt 2pt](2,1)(2,1) -\end{MEx} - -\pitem[dotsep=dim] - The distance between dots in the "dotted" line style. For example -\begin{MEx}(4,1) - \psline[linestyle=dotted,dotsep=2pt]{|->>}(4,1) -\end{MEx} - -\pitem[border=dim] - A positive value draws a border of width <dim> and color \p{bordercolor} on -each side of the curve. This is useful for giving the impression that one line -passes on top of another. The value is saved in the dimension register -\n\psborder. - -\pitem[bordercolor=color] - See \p{border} above. - - For example: -\begin{MEx}(4,3) - \psline(0,0)(1.8,3) - \psline[border=2pt]{*->}(0,3)(1.8,0) - \psframe*[linecolor=gray](2,0)(4,3) - \psline[linecolor=white,linewidth=1.5pt]{<->}(2.2,0)(3.8,3) - \psellipse[linecolor=white,linewidth=1.5pt, - bordercolor=gray,border=2pt](3,1.5)(.7,1.4) -\end{MEx} - -\pitem[doubleline=true/false] - When "true", a double line is drawn, separated by a space that is -\p{doublesep} wide and of color \p{doublecolor}. This doesn't work as expected -with the "dashed" \p{linestyle}, and some arrows look funny as well. - -\pitem[doublesep=dim] - See \p{doubleline}, above. - -\pitem[doublecolor=color] - See \p{doubleline}, above. - -Here is an example of double lines: -\begin{MEx}(4,1) - \psline[doubleline=true,linearc=.5, - doublesep=1.5pt]{->}(0,0)(3,1)(4,0) -\end{MEx} - -\pitem[shadow=true/false] - When "true", a shadow is drawn, at a distance \p{shadowsize} from the -original curve, in the direction \p{shadowangle}, and of color -\p{shadowcolor}. - -\pitem[shadowsize=dim] - See \p{shadow}, above. - -\pitem[shadowangle=angle] - See \p{shadow}, above. - -\pitem[shadowcolor=color] - See \p{shadow}, above. - -Here is an example of the \p{shadow} feature, which should look familiar: -\begin{MEx}[-1,-.5](1,.7) - \pspolygon[linearc=2pt,shadow=true,shadowangle=45, - xunit=1.1](-1,-.55)(-1,.5)(-.8,.5)(-.8,.65) - (-.2,.65)(-.2,.5)(1,.5)(1,-.55) -\end{MEx} -\end{description} - -Here is another graphics parameter that is related to lines but that applies -only to the closed graphics objects \n\psframe, \n\pscircle, \n\psellipse{} and -\n\pswedge: -\begin{Ex} - \Par{dimen=outer/inner/middle} -\end{Ex} -It determines whether the dimensions refer to the inside, outside or middle of -the boundary. The difference is noticeable when the linewidth is large: -\begin{MEx*}(4,3) - \psset{linewidth=.25cm} - \psframe[dimen=inner](0,0)(2,1) - \psframe[dimen=middle](0,2)(2,3) - \psframe[dimen=outer](3,0)(4,3) -\end{MEx*} -With "\pswedge", this only affects the radius; the origin always lies in the -middle the boundary. The right setting of this parameter depends on how you -want to align other objects. - - -\Section{Fill styles\label{S-fillstyles}} - -The next group of graphics parameters determine how closed regions are filled. -Even open curves can be filled; this does not affect how the curve is painted. -\begin{description}\raggedright - -\pitem[fillstyle=style] - Valid styles are - \begin{quote}\raggedright - "none", "solid", "vlines", "vlines*", "hlines", "hlines*", "crosshatch" and -"crosshatch*". - \end{quote} - "vlines", "hlines" and "crosshatch" draw a pattern of lines, according to -the four parameters list below that are prefixed with "hatch". The "*" -versions also fill the background, as in the "solid" style. - -\pitem[fillcolor=color] - The background color in the "solid", "vlines*", "hlines*" and "crosshatch*" -styles. - -\pitem[hatchwidth=dim] - Width of lines. - -\pitem[hatchsep=dim] - Width of space between the lines. - -\pitem[hatchcolor=color] - Color of lines. Saved in \n\pshatchcolor. - -\pitem[hatchangle=rot] - Rotation of the lines, in degrees. For example, if \p{hatchangle} is set to -"45", the "vlines" style draws lines that run NW-SE, and the "hlines" style -draws lines that run "SW-NE", and the "crosshatch" style draws both. -\end{description} - -Here is an example of the "vlines" and related fill styles:\footnote{% -PSTricks adjusts the lines relative to the resolution so that they all have -the same width and the same intervening space. Otherwise, the checkered -pattern in this example would be noticeably uneven, even on 300 dpi devices. -This adjustment is resolution dependent, and may involve adjustments to the -\p{hatchangle} when this is not initially a multiple of 45 degrees.} -\begin{MEx}(4,3) - \pspolygon[fillstyle=vlines](0,0)(0,3)(4,0) - \pspolygon[fillstyle=hlines](0,0)(4,3)(4,0) - \pspolygon[fillstyle=crosshatch*,fillcolor=black, - hatchcolor=white,hatchwidth=1.2pt,hatchsep=1.8pt, - hatchangle=0](0,3)(2,1.5)(4,3) -\end{MEx} - -Each of the pure graphics objects (except those beginning with "q") has a -starred version that produces a solid object of color \p{linecolor}. (It -automatically sets \p{linewidth} to zero, \p{fillcolor} to \p{linecolor}, -\p{fillstyle} to "solid", and \p{linestyle} to "none".) - - -\Section{Arrowheads and such\label{S-arrows}} - - Lines and other open curves can be terminated with various arrowheads, -t-bars or circles. The -\begin{Ex} - \Par{arrows=style} -\end{Ex} -parameter determines what you get. It can have the following values, which are -pretty intuitive:\footnote{This is \TeX's version of WYSIWYG.}% -\newbox\arrowtable -\setbox\arrowtable=\hbox{% - \def\myline#1{\psline{#1}(0,1ex)(1.3,1ex)}% - \catcode`\<=12 - \begin{tabular}{cll}% - \emph{Value} & \hbox to 1.3cm{\emph{Example}}\hss & \emph{Name} \\[2pt] - "-" & \myline{-} & None\\ - "<->" & \myline{<->} & Arrowheads.\\ - ">-<" & \myline{>-<} & Reverse arrowheads.\\ - "<<->>" & \myline{<<->>} & Double arrowheads.\\ - ">>-<<" & \myline{>>-<<} & Double reverse arrowheads.\\ - "|-|" & \myline{|-|} & T-bars, flush to endpoints.\\ - "|*-|*" & \myline{|*-|*} & T-bars, centered on endpoints.\\ - "|<->|" & \myline{|<->|} & T-bars and arrowheads.\\ - "|<*->|*" & \myline{|<*->|*} & T-bars and arrowheads, flush.\\ - "[-]" & \myline{[-]} & Square brackets.\\ - "(-)" & \myline{(-)} & Rounded brackets.\\ - "o-o" & \myline{o-o} & Circles, centered on endpoints.\\ - "*-*" & \myline{*-*} & Disks, centered on endpoints.\\ - "oo-oo" & \myline{oo-oo} & Circles, flush to endpoints.\\ - "**-**" & \myline{**-**} & Disks, flush to endpoints.\\ - "c-c" & \myline{c-c} & Extended, rounded ends.\\ - "cc-cc" & \myline{cc-cc} & Flush round ends.\\ - "C-C" & \myline{C-C} & Extended, square ends. - \end{tabular}}% -\addtoquickref{center}{% - {\large\textbf{Arrows}}\par - \leavevmode\box\arrowtable} -\begin{center} - \leavevmode\copy\arrowtable -\end{center} -You can also mix and match. E.g., "->", "*-)" and "[->" are all valid values -of the \p{arrows} parameter. - -Well, perhaps the "c", "cc" and "C" arrows are not so obvious. "c" and "C" -correspond to setting PostScript's "linecap" to 1 and 2, respectively. "cc" is -like "c", but adjusted so that the line flush to the endpoint. These arrows -styles are noticeable when the \p{linewidth} is thick: -\begin{MEx}[-.25,-.25](3.25,2.25) - \psline[linewidth=.5cm](0,0)(0,2) - \psline[linewidth=.5cm]{c-c}(1,0)(1,2) - \psline[linewidth=.5cm]{cc-cc}(2,0)(2,2) - \psline[linewidth=.5cm]{C-C}(3,0)(3,2) - "\rput[t](0,-.3){\texttt{-}} - "\rput[t](1,-.3){\texttt{c-c}} - "\rput[t](2,-.3){\texttt{cc-cc}} - "\rput[t](3,-.3){\texttt{C-C}} -\end{MEx} - -Almost all the open curves let you include the \p{arrows} parameters as an -optional argument, enclosed in curly braces and before any other arguments -(except the optional parameters argument). E.g., instead of -\begin{LVerb} - \psline[arrows=<-,linestyle=dotted](3,4) -\end{LVerb} -you can write -\begin{LVerb} - \psline[linestyle=dotted]{<-}(3,4) -\end{LVerb} -The exceptions are a few streamlined macros that do not support the use of -arrows (these all begin with "q"). - -The size of these line terminators is controlled by the following parameters. -In the description of the parameters, the width always refers to the dimension -perpendicular to the line, and length refers to a dimension in the direction -of the line. -\begin{description} - -\pitem[arrowsize=dim `num'] - The width of arrowheads is <dim> plus <num> times \p{linewidth} -(if the optional `num' is inclued). See the diagram below. - -\pitem[arrowlength=num] - Length of arrowheads, as a fraction of the width, as shown below. - -\pitem[arrowinset=num] - Size of inset for arrowheads, as a fraction of the length, as shown below. - -\begin{center}\leavevmode -\hbox to \linewidth{% - \psset{unit=.5cm} - \pspicture[shift=3cm](-3.6,-1.3)(3.4,4.8) - \pspolygon*(-2,0)(0,4)(2,0)(0,1) - \psset{arrows=|-|} - \psline(-2.5,0)(-2.5,4)\rput(-2.7,2){\psframebox*{\emph{length}}} - \psline(-2,-.5)(2,-.5)\rput(0,-.5){\psframebox*{\emph{width}}} - \psline(2.5,0)(2.5,1)\rput[l](2.8,.5){\emph{inset}} - \endpspicture - \hfill - \begin{tabular}{rcl} - \texttt{arrowsize} & = & <dim num>\\ - \emph{width} & = & <num> x \p{linewidth} + <dim1>\\ - \emph{length} & = & \p{arrowlength} x \emph{width}\\ - \emph{inset} & = & \p{arrowinset} x \emph{height} - \end{tabular}} -\end{center} - -\pitem[tbarsize=dim `num'] - The width of a t-bar, square bracket or rounded bracket is <dim> plus <num> -times \p{linewidth} (if the optional `num' is included). -\p{linewidth}, plus <dim>. - -\pitem[bracketlength=num] - The height of a square bracket is <num> times its width. - -\pitem[rbracketlength=num] - The height of a round bracket is <num> times its width. - -\pitem[arrowscale=arrowscale=num1 <num2>] - Imagine that arrows and such point down. This scales the width of the arrows -by <num1> and the length (height) by <num2>. If you only include one number, -the arrows are scaled the same in both directions. Changing \p{arrowscale} can -give you special effects not possible by changing the parameters described -above. E.g., you can change the width of lines used to draw brackets. - -\end{description} - -The size of dots is controlled by the \p{dotsize} parameter. - - -\Section{Custom styles} - -You can define customized versions of any macro that has parameter changes as -an optional first argument using the \n\newpsobject{} command: - \Mac \newpsobject{name}{object}{par1=value1`,\ldots'} -as in -\begin{LVerb} - \newpsobject{myline}{psline}{linecolor=green,linestyle=dotted} - \newpsobject{mygrid}{psgrid}{subgriddiv=1,griddots=10, - gridlabels=7pt} -\end{LVerb} -The first argument is the name of the new command you want to define. The -second argument is the name of the graphics object. Note that both of these -arguments are given without the backslash. The third argument is the special -parameter values that you want to set. - -With the above examples, the commands "\myline" and "\mygrid" work just like -the graphics object \n\psline{} it is based on, and you can even reset the -parameters that you set when defining "\myline", as in: -\begin{LVerb} - \myline[linecolor=gray,dotsep=2pt](5,6) -\end{LVerb} - -Another way to define custom graphics parameter configurations is with the - \Mac \newpsstyle{name}{par1=value1`,\ldots'} -command. You can then set the \p{style} graphics parameter to <name>, rather -than setting the parameters given in the second argument of \n\newpsstyle. For -example, -\begin{LVerb} - \newpsstyle{mystyle}{linecolor=green,linestyle=dotted} - \psline[style=mystyle](5,6) -\end{LVerb} - -\endinput - -%% END psd-para.tex diff --git a/Master/texmf-dist/doc/generic/pstricks/psd-pict.tex b/Master/texmf-dist/doc/generic/pstricks/psd-pict.tex deleted file mode 100644 index 59fa301d2dd..00000000000 --- a/Master/texmf-dist/doc/generic/pstricks/psd-pict.tex +++ /dev/null @@ -1,500 +0,0 @@ -%% BEGIN psd-pict.tex - -\part{Picture Tools\label{P-pictures}} - -\Section{Pictures\label{S-pspic}} - -The graphics objects and \n\rput{} and its variants do not change \TeX's -current point (i.e., they create a 0-dimensional box). If you string several -of these together (and any other 0-dimensional objects), they share the same -coordinate system, and so you can create a picture. For this reason, these -macros are called \emph{picture objects}. - -If you create a picture this way, you will probably want to give the whole -picture a certain size. You can do this by putting the picture objects in a -\p{pspicture} environment, as in: -\begin{Ex} - \object \pspicture`*[baseline](\x0,\y0)'\c1 - < picture objects> - \object \endpspicture -\end{Ex} -The picture objects are put in a box whose lower left-hand corner is at \c0 -(by default, "(0,0)") and whose upper right-hand corner is at \c1. - -By default, the baseline is set at the bottom of the box, but the optional -argument "[<baseline>]" sets the baseline fraction <baseline> from the bottom. -Thus, <baseline> is a number, generally but not necessarily between 0 and 1. -If you include this argument but leave it empty (\texttt{[\kern 1pt]}), then -the baseline passes through the origin. - -Normally, the picture objects can extend outside the boundaries of the box. -However, if you include the "*", anything outside the boundaries is clipped. - -Besides picture objects, you can put anything in a \n\pspicture{} that does -not take up space. E.g., you can put in font declarations and use \n\psset, -and you can put in braces for grouping. PSTricks will alert you if you include -something that does take up space.\footnote{% -When PSTricks picture objects are included in a \n\pspicture{} environment, -they gobble up any spaces that follow, and any preceding spaces as well, -making it less likely that extraneous space gets inserted. (PSTricks objects -always ignore spaces that follow. If you also want them to try to neutralize -preceding space when used outside the \n\pspicture{} environment (e.g., in a -\LaTeX{} "picture" environment), then use the command \Main\KillGlue. The -command \Main\DontKillGlue{} turns this behavior back off.)} - -\LaTeX{} users can type -\begin{Ex} - "\begin{pspicture}" \ldots\ "\end{pspicture}" -\end{Ex} -You can use PSTricks picture objects in a \LaTeX{} "picture" environment, and -you can use \LaTeX{} picture objects in a PSTricks {\UsageFont pspicture} -environment. However, the {\UsageFont pspicture} environment makes \LaTeX's -"picture" environment obsolete, and has a few small advantages over the -latter. Note that the arguments of the {\UsageFont pspicture} environment work -differently from the arguments of \LaTeX's "picture" environment (i.e., the -right way versus the wrong way). - - -\begin{drivers} The clipping option ("*") uses \n\pstVerb{} and -\n\pstverbscale. -\end{drivers} - - -\Section{Placing and rotating whatever\label{S-rput}} - -PSTricks contains several commands for positioning and rotating an HR-mode -argument. All of these commands end in "put", and bear some similarity to -\LaTeX's "\put" command, but with additional capabilities. Like \LaTeX's -"\put" and unlike the box rotation macros described in Section -\ref{S-rotation}, these commands do not take up any space. They can be used -inside and outside \n\pspicture{} environments. - -Most of the PSTricks "put" commands are of the form: -\begin{Ex} - \Backslash <put>*<arg>"{<rotation>}(<coor>){<stuff>}" -\end{Ex} -With the optional "*" argument, <stuff> is first put in a -\begin{LVerb*} - \psframebox*[boxsep=false]{<stuff>} -\end{LVerb*} -thereby blotting out whatever is behind <stuff>. This is useful for -positioning text on top of something else. - -<arg> refers to other arguments that vary from one "put" command to another, -The optional <rotation> is the angle by which <stuff> should be rotated; this -arguments works pretty much the same for all "put" commands and is described -further below. The "(<coor>)" argument is the coordinate for positioning -<stuff>, but what this really means is different for each "put" command. The -"(<coor>)" argument is shown to be obligatory, but you can actually omit it if -you include the <rotation> argument. - -The <rotation> argument should be an angle, as described in Section -\ref{S-coor}, but the angle can be preceded by an "*". This causes all the -rotations (except the box rotations described in Section \ref{S-rotation}) -within which the \n\rput{} command is be nested to be undone before setting the -angle of rotation. This is mainly useful for getting a piece of text right -side up when it is nested inside rotations. For example, -\begin{MEx}[-1,-.5](2,2) - \rput{34}{% - \psframe(-1,0)(2,1) - \rput[br]{*0}(2,1){\emph{stuff}}} -\end{MEx} - -There are also some letter abbreviations for the command angles. These -indicate which way is up: -\begin{trivlist}\item[] - \leavevmode - \hbox to \hsize{\hfill - \begin{tabular}{clr} - \emph{Letter} & \emph{Short for} & \emph{Equiv.\ to}\\ - "U" & Up & 0\\ - "L" & Left & 90\\ - "D" & Down & 180\\ - "R" & Right & 270\\ - \end{tabular} - \hfill - \begin{tabular}{clr} - \emph{Letter} & \emph{Short for} & \emph{Equiv.\ to}\\ - "N" & North & *0\\ - "W" & West & *90\\ - "S" & South & *180\\ - "E" & East & *270 - \end{tabular}\hfill} -\end{trivlist} - - -This section describes just a two of the PSTricks "put" commands. The most -basic one command is - \Mac \rput`*[refpoint]{rotation}'\c~{stuff} -<refpoint> determines the reference point of <stuff>, and this reference point -is translated to \c{}. - -By default, the reference point is the center of the box. This can be changed -by including one or two of the following in the optional <refpoint> argument: -\begin{center} -\begin{tabular}{rlcrl} -\multicolumn{2}{l}\emph{Horizontal} & & \multicolumn{2}{l}\emph{Vertical}\\ -"l" & Left & & "t" & Top\\ -"r" & Right & & "b" & Bottom\\ - & & & "B" & Baseline -\end{tabular} -\end{center} -Visually, here is where the reference point is set of the various combinations -(the dashed line is the baseline): -\begin{center} -\begin{pspicture}(-2.4,-.9)(2.4,1.9) - \ttfamily\bfseries - \psframe(-2,-.5)(2,1.5) - \psline[linestyle=dashed](-2,0)(2,0) - \uput[u](0,1.5){t} - \uput[d](0,-.5){b} - \rput*(0,0){B} - \uput[l](-2,.5){l} - \uput[l](-2,0){Bl} - \uput[dl](-2,-.5){bl} - \uput[ul](-2,1.5){tl} - \uput[r](2,.5){r} - \uput[r](2,0){Br} - \uput[dr](2,-.5){br} - \uput[ur](2,1.5){tr} -\end{pspicture} -\end{center} - -There are numerous examples of \n\rput{} in this documentation, but for now -here is a simple one: -\begin{example**} - \rput[b]{90}(-1,0){Here is a marginal note.} -\end{example**} - -One common use of a macro such as \n\rput{} is to put labels on things. -PSTricks has a variant of \n\rput{} that is especially designed for labels: - \Mac \uput`*{labelsep}'[refangle]`{rotation}\c~'{stuff} -This places <stuff> distance <labelsep> from \c{}, in the direction -<refangle>. - -The default value of <labelsep> is the dimension register - \Mac \pslabelsep -You can also change this be setting the -\begin{Ex} - \Par{labelsep=dim} -\end{Ex} -parameter (but remember that \n\uput{} does have an optional argument for -setting parameters). - -Here is a simple example: -\begin{MEx}(3,2) - \qdisk(1,1){1pt} - \uput[45](1,1){(1,1)} -\end{MEx} - -Here is a more interesting example where \n\uput{} is used to make a pie -chart: -\begin{example} - \psset{unit=1.2cm} - \pspicture(-2.2,-2.2)(2.2,2.2) - \pswedge[fillstyle=solid,fillcolor=gray]{2}{0}{70} - \pswedge[fillstyle=solid,fillcolor=lightgray]{2}{70}{200} - \pswedge[fillstyle=solid,fillcolor=darkgray]{2}{200}{360} - \SpecialCoor - \psset{framesep=1.5pt} - \rput(1.2;35){\psframebox*{\small\$9.0M}} - \uput{2.2}[45](0,0){Oreos} - \rput(1.2;135){\psframebox*{\small\$16.7M}} - \uput{2.2}[135](0,0){Heath} - \rput(1.2;280){\psframebox*{\small\$23.1M}} - \uput{2.2}[280](0,0){M\&M} - \endpspicture -\end{example} - -You can use the following abbreviations for <refangle>, which indicate the -direction the angle points:% -\footnote{Using the abbreviations when applicable is more efficient.}% -\footnote{% -There is an obsolete command \n\Rput\MainIndex{\Rput}{} that has the same -syntax as \n\uput{} and that works almost the same way, except the <refangle> -argument has the syntax of \n\rput's <refpoint> argument, and it gives the -point in <stuff> that should be aligned with \c{}. E.g., -\begin{Ex} - "\qdisk(4,0){2pt}"\qdisk(4,0){2pt}\Rput[tl](4,0){$(x,y)$}\\ - "\Rput[tl](4,0){$(x,y)$}" -\end{Ex} -Here is the equivalence between \n\uput's <refangle> abbreviations and -\n\Rput's <refpoint> abbreviations: -\begin{center} - \ttfamily - \begin{tabular}{rcccccccc} - \n\uput & r & u & l & d & ur & ul & dr & dl \\ - \n\Rput & l & b & r & t & bl & br & tr & rl \\ - \end{tabular} -\end{center} -Some people prefer \n\Rput's convention for specifying the position of <stuff> -over \n\uput's.}% -\begin{trivlist}\item[] - \leavevmode - \hbox to \hsize{\hfill - \begin{tabular}{clr} - \emph{Letter} & \emph{Short for} & \emph{Equiv.\ to}\\ - "r" & right & 0\\ - "u" & up & 90\\ - "l" & left & 180\\ - "d" & down & 270\\ - \end{tabular} - \hfill - \begin{tabular}{clr} - \emph{Letter} & \emph{Short for} & \emph{Equiv.\ to}\\ - "ur" & up-right & 45\\ - "ul" & up-left & 135\\ - "dl" & down-left & 225\\ - "dr" & down-right & 315 - \end{tabular}\hfill} -\end{trivlist} -The first example could thus have been written: -\begin{MEx}(3,2) - \qdisk(1,1){1pt} - \uput[ur](1,1){(1,1)} -\end{MEx} - -\begin{drivers} The rotation macros use \n\pstVerb{} and \n\pstrotate. -\end{drivers} - - -\Section{Repetition\label{S-loops}} - -The macro - \Mac \multirput`*[refpoint]{angle}\c0'\c1{int}{stuff} -is a variant of \n\rput{} that puts down <int> copies, starting at \c0 and -advancing by \c1 each time. \c0 and \c1 are always interpreted as Cartesian -coordinates. For example: -\begin{MEx}(4,1.3) - \multirput(.5,0)(.3,.1){12}{*} -\end{MEx} - -If you want copies of pure graphics, it is more efficient to use - \Mac \multips`{angle}\c0'\c1{int}{graphics} -<graphics> can be one or more of the pure graphics objects described in Part -\ref{P-graphics}, or \n\pscustom. Note that \n\multips{} has the same syntax as -\n\multirput, except that there is no <refpoint> argument (since the graphics -are zero dimensional anyway). Also, unlike \n\multirput, the coordinates can -be of any type. An "Overfull \hbox" warning indicates that the <graphics> -argument contains extraneous output or space. For example: -\begin{MEx}[0,-.25](4,.25) - \def\zigzag{\psline(0,0)(.5,1)(1.5,-1)(2,0)}% - \psset{unit=.25,linewidth=1.5pt} - \multips(0,0)(2,0){8}{\zigzag} -\end{MEx} - -PSTricks can heavily benefit of a much more general loop macro, called -\n\multido. -\File{multido} You must input the file "multido.tex" or "multido.sty". See the -documentation "multido.doc" for details. Here is a sample of what you can do: -\begin{example} - \begin{pspicture}(-3.4,-3.4)(3.4,3.4) - \newgray{mygray}{0} % Initialize `mygray' for benefit - \psset{fillstyle=solid,fillcolor=mygray} % of this line. - \SpecialCoor - \degrees[1.1] - \multido{\n=0.0+.1}{11}{% - \newgray{mygray}{\n} - \psset{fillcolor=mygray}% - \rput{\n}{\pswedge{3}{-.05}{.05}} - \uput{3.2}[\n](0,0){\small\n}} - \end{pspicture} -\end{example} - -All of these loop macros can be nested. - - -\Section{Axes\label{S-axes}} - -\File{pst-plot} -The axes command described in this section is defined in "pst-plot.tex" / -"pst-plot.sty", which you must input first. "pst-plot.tex", in turn, will -automatically input "multido.tex", which is used for putting the labels on the -axes. - -The macro for making axes is: - \Mac \psaxes`*[par]{arrows}\c0\c1'\c2 - -The coordinates must be Cartesian coordinates. They work the same way as with -\n\psgrid. That is, if we imagine that the axes are enclosed in a rectangle, -\c1 and \c2 are opposing corners of the rectangle. (I.e., the x-axis extends -from \x1 to \x2 and the y-axis extends from \y1 to \y2.) The axes intersect at -\c0. For example: -\begin{MEx*}(4,3) - \psaxes[linewidth=1.2pt,labels=none, - ticks=none]{<->}(2,1)(0,0)(4,3) - "\psset{nodesep=3pt} - "\pnode(4,3){B} - "\rput*[tr](4,2.3){\rnode{A}{\c2}} - "\ncline{->}{A}{B} - "\pnode(2,1){B} - "\rput*[br](1.3,1.7){\rnode{A}{\c0}} - "\ncline{->}{A}{B} - "\pnode(0,0){B} - "\rput*[bl](0,-.9){\rnode{A}{\c1}} - "\ncline{->}{A}{B} -\end{MEx*} - -If \c0 is omitted, then the origin is \c1. If both \c0 and \c1 are omitted, -"(0,0)" is used as the default. For example, when the axes enclose a single -orthont, only \c2 is needed: -\begingroup -\psset{unit=.8} -\begin{MEx}[-.5,-.5](4,2) - "\small - \psaxes{->}(4,2) -\end{MEx} -\endgroup - -Labels (numbers) are put next to the axes, on the same side as \x1 and \y1. -Thus, if we enclose a different orthont, the numbers end up in the right -place: -\begingroup -\psset{unit=.8} -\begin{MEx}[-.5,-2](4,.5) - "\small - \psaxes{->}(4,-2) -\end{MEx} -\endgroup - -Also, if you set the \p{arrows} parameter, the first arrow is used for the -tips at <x1> and <y1>, while the second arrow is used for the tips at <x2> and -<y2>. Thus, in the preceding examples, the arrowheads ended up in the right -place too.\footnote{% -Including a first arrow in these examples would have had no effect because -arrows are never drawn at the origin.} - -When the axes don't just enclose an orthont, that is, when the origin is not -at a corner, there is some discretion as to where the numbers should go. The -rules for positioning the numbers and arrows described above still apply, and -so you can position the numbers as you please by switching <y1> and <y2>, or -<x1> and <x2>. For example, compare -\begingroup -\psset{unit=.8} -\begin{MEx}[-1.5,-.5](2.5,2.5) - "\small - \psaxes{<->}(0,0)(-2.5,0)(2.5,2.5) -\end{MEx} -\endgroup -with what we get when <x1> and <x2> are switched: -\begingroup -\psset{unit=.8} -\begin{MEx}[-1.5,-.5](2.5,2.5) - "\small - \psaxes{<->}(0,0)(2.5,0)(-2.5,2.5) -\end{MEx} -\endgroup - -\n\psaxes{} puts the ticks and numbers on the axes at regular intervals, using -the following parameters: -\newbox\axesbox -\MainParIndex{Ox} -\MainParIndex{Dx} -\MainParIndex{dx} -\MainParIndex{Oy} -\MainParIndex{Dy} -\MainParIndex{dy} -\setbox\axesbox=\hbox{% - \large - \begin{tabular}{|c|c|c|l|} - \hline - \emph{Horitontal} & \emph{Vertical} & \emph{Dflt} & - \emph{Description}\\[2pt] - \p{Ox=num} & \p{Oy=num} & "0" & Label at origin.\\ - \p{Dx=num} & \p{Dy=num} & "1" & Label increment.\\ - \p{dx=dim} & \p{dy=dim} & "0pt" & Dist btwn labels.\\ - \hline - \end{tabular}} -\addtoquickref{center}{% - {\large\textbf{Axes label parameters}}\par - \leavevmode\box\axesbox} -\begin{center} -\leavevmode\copy\axesbox -\end{center} -When \p{dx} is 0, "Dx\psxunit" is used instead, and similarly for \p{dy}. -Hence, the default values of "0pt" for \p{dx} and \p{dy} are not as peculiar -as they seem. - -You have to be very careful when setting \p{Ox}, \p{Dx}, \p{Oy} and \p{Dy} to -non-integer values. "multido.tex" increments the labels using rudimentary -fixed-point arithmetic, and it will come up with the wrong answer unless -\p{Ox} and \p{Dx}, or \p{Oy} and \p{Dy}, have the same number of digits to the -right of the decimal. The only exception is that \p{Ox} or \p{Oy} can always -be an integer, even if \p{Dx} or \p{Dy} is not. (The converse does not work, -however.)% -\footnote{For example, \p{Ox=1.0} and \p{Dx=1.4} is okay, as is \p{Ox=1} and -\p{Dx=1.4}, but \p{Ox=1.4} and \p{Dx=1}, or \p{Ox=1.4} and \p{Dx=1.15}, is not -okay. If you get this wrong, PSTricks won't complain, but you won't get the -right labels either.} - -Note that \n\psaxes's first coordinate argument determines the physical -position of the origin, but it doesn't affect the label at the origin. E.g., -if the origin is at "(1,1)", the origin is still labeled "0" along each axis, -unless you explicitly change \p{Ox} and \p{Oy}. For example: -\begin{MEx}[-2,0](2,3) - \psaxes[Ox=-2](-2,0)(2,3) -\end{MEx} - -The ticks and labels use a few other parameters as well: -\begin{description} - -\pitem[labels=all/x/y/none] - To specify whether labels appear on both axes, the x-axis, the y-axis, or -neither. - -\pitem[showorigin=true/false] - If "true", then labels are placed at the origin, as long as the label -doesn't end up on one of the axes. If "false", the labels are never placed at -the origin. - -\pitem[ticks=all/x/y/none] - To specify whether ticks appear on both axes, the x-axis, the y-axis, or -neither. - -\pitem[tickstyle=full/top/bottom] - For example, if \p{tickstyle=top}, then the ticks are only on the side of -the axes away from the labels. If \p{tickstyle=bottom}, the ticks are on the -same side as the labels. "full" gives ticks extending on both sides. - -\pitem[ticksize=dim] - Ticks extend <dim> above and/or below the axis. - -\end{description} - -The distance between ticks and labels is \n\pslabelsep, which you can change -with the \p{labelsep} parameter. - -The labels are set in the current font (ome of the examples above were -preceded by "\small" so that the labels would be smaller). You can do fancy -things with the labels by redefining the commands: -\begin{Ex} - \object \pshlabel - \object \psvlabel -\end{Ex} -E.g., if you want change the font of the horizontal labels, but not the -vertical labels, try something like -\begin{LVerb} - \def\pshlabel#1{\small #1} -\end{LVerb} - -You can choose to have a frame instead of axes, or no axes at all (but you -still get the ticks and labels), with the parameter: -\begin{Ex} - \Par{axesstyle=axes/frame/none} -\end{Ex} -The usual \p{linestyle}, \p{fillstyle} and related paremeters apply. - -For example: -\begin{MEx}[-3,-.5](.5,3) - \psaxes[Dx=.5,dx=1,tickstyle=top,axesstyle=frame](-3,3) -\end{MEx} - -The \n\psaxes{} macro is pretty flexible, but PSTricks contains some other -tools for making axes from scratch. E.g., you can use \n\psline{} and -\n\psframe{} to draw axes and frames, respectively, \n\multido{} to generate -labels (see the documentation for "multido.tex"), and \n\multips{} to make -ticks. - -\endinput - -%% END psd-pict.tex diff --git a/Master/texmf-dist/doc/generic/pstricks/psd-spec.tex b/Master/texmf-dist/doc/generic/pstricks/psd-spec.tex deleted file mode 100644 index 1b7e205a311..00000000000 --- a/Master/texmf-dist/doc/generic/pstricks/psd-spec.tex +++ /dev/null @@ -1,500 +0,0 @@ -%% BEGIN psd-spec.tex - -\part{Special Tricks\label{P-special}} - -\Section{Coils and zigzags} - -\File{pst-coil} -The file "pst-coil.tex"/"pst-coil.sty" (and optionally the header file -"pst-coil.pro") defines the following graphics objects for coils and zigzags: -\begin{Ex} - \object \pscoil`*[par]{arrows}\c0'\c1 - \object \psCoil`*[par]'{angle1}{angle2} - \object \pszigzag`*[par]{arrows}\c0'\c1 -\end{Ex} - - These graphics objects use the following parameters: -\begin{Ex} - \Par{coilwidth=dim} - \Par{coilheight=num} - \Par{coilarm=dim} - \Par{coilaspect=angle} - \Par{coilinc=angle} -\end{Ex} - -All coil and zigzag objects draw a coil or zigzag whose width (diameter) is -\p{coilwidth}, and with the distance along the axes for each period (360 -degrees) equal to -\begin{quote} - \p{coilheight} x \p{coilwidth}. -\end{quote} - -Both \n\pscoil{} and \n\psCoil{} draw a ``3D'' coil, projected onto the xz-axes. -The center of the 3D coil lies on the yz-plane at angle p{coilaspect} to the -z-axis. The coil is drawn with PostScript's "lineto", joining points that lie -at angle \p{coilinc} from each other along the coil. Hence, increasing -\p{coilinc} makes the curve smoother but the printing slower. \n\pszigzag\ -does not use the \p{coilaspect} and \p{coilinc} parameters. - -\n\pscoil{} and \n\pszigzag{} connect \c0 and \c1, starting and ending with -straight line segments of length \p{coilarmA} and \p{coilarmB}, resp. Setting -\p{coilarm} is the same as setting \p{coilarmA} and \p{coilarmB}. - -Here is an example of \n\pscoil: -\begin{MEx}(4,2) - \pscoil[coilarm=.5cm,linewidth=1.5pt,coilwidth=.5cm]{<-|}(4,2) -\end{MEx} - -Here is an example of \n\pszigzag: -\begin{MEx}[0,-.5](4,.5) - \pszigzag[coilarm=.5,linearc=.1]{<->}(4,0) -\end{MEx} -Note that \n\pszigzag{} uses the \p{linearc} parameters, and that the beginning -and ending segments may be longer than \p{coilarm} to take up slack. - -\n\psCoil{} just draws the coil horizontally from <angle1> to <angle2>. Use -\n\rput{} to rotate and translate the coil, if desired. \n\psCoil{} does not use -the \p{coilarm} parameter. For example, with \p{coilaspect=0} we get a sine -curve: -\begin{MEx}[0,-.375](4,.375) - \psCoil[coilaspect=0,coilheight=1.33, - coilwidth=.75,linewidth=1.5pt]{0}{1440} -\end{MEx} - -\File{pst-node} -"pst-coil.tex" also contains coil and zigzag node connections. You must also -load "pst-node.tex" / "pst-node.sty" to use these. The node connections are: -\begin{Ex} - \object \nccoil`*[par]{arrows}'{nodeA}{nodeB} - \object \nczigzag`*[par]{arrows}'{nodeA}{nodeB} - \object \pccoil`*[par]{arrows}'\c1\c2 - \object \pczigzag`*[par]{arrows}'\c1\c2 -\end{Ex} -The end points are chosen the same as for \n\ncline{} and \n\pcline, and -otherwise these commands work like \n\pscoil{} and \n\pszigzag. For example: -\begin{MEx}(4,3) - \cnode(.5,.5){.5}{A} - \cnode[fillstyle=solid,fillcolor=lightgray](3.5,2.5){.5}{B} - \nccoil[coilwidth=.3]{<->}{A}{B} -\end{MEx} - - -\Section{Special coordinates\label{S-SpecialCoor}} - -The command - \Mac \SpecialCoor -enables a special feature that lets you specify coordinates in a variety of -ways, in addition to the usual Cartesian coordinates.\footnote{% -There is an obsolete command \n\Polar\MainIndex\Polar{} that causes -coordinates in the form "(<r>,<a>)" to be interpreted as polar coordinates. -The use of \n\Polar{} is not recommended because it does not allow one to mix -Cartesian and polar coordinates the way \n\SpecialCoor{} does, and because it -is not as apparent when examining an input file whether, e.g., "(3,2)" is a -Cartesian or polar coordinate. The command for undoing \n\Polar{} is -\n\Cartesian\MainIndex\Cartesian. It has an optional argument for setting the -default units. I.e., -\begin{LVerb*} - \Cartesian(<x>,<y>) -\end{LVerb*} -has the effect of -\begin{LVerb*} - \psset{xunit=<x>,yunit=<y>} -\end{LVerb*} -\n\Cartesian{} can be used for this purpose without using \n\Polar.} -Processing is slightly slower and less robust, which is why this feature is -available on demand rather than by default, but you probably won't notice the -difference. - -Here are the coordinates you can use: -\begin{description} - \vitem"(<x>,<y>)" The usual Cartesian coordinate. E.g., "(3,4)". - \vitem"(<r>;<a>)" Polar coordinate, with radius $r$ and angle $a$. The -default unit for $r$ is \p{unit}. E.g., "(3;110)". - \vitem"(<node>)" The center of <node>. E.g., "(A)". - \vitem"([<par>]<node>)" The position relative to <node> determined using the -\p{angle}, \p{nodesep} and \p{offset} parameters. E.g., "([angle=45]A)". - \vitem"(!<ps>)" Raw PostScript code. <ps> should expand to a coordinate pair. -The units \p{xunit} and \p{yunit} are used. For example, if I want to use a -polar coordinate $(3,110)$ that is scaled along with \p{xunit} and \p{yunit}, -I can write -\begin{LVerb} - (!3 110 cos mul 3 110 sin mul) -\end{LVerb} - \vitem"(<coor1>|<coor2>)" The $x$ coordinate from <coor1> and the $y$ -coordinate from <coor2>. <coor1> and <coor2> can be any other coordinates for -use with \n\SpecialCoor. For example, "(A|1in;30)". -\end{description} - -\n\SpecialCoor{} also lets you specify angles in several ways: -\begin{description} -\vitem"<num>" A number, as usual, with units given by the \n\degrees{} command. -\vitem"(<coor>)" A coordinate, indicating where the angle points to. Be sure -to include the "()", in addition to whatever other delimiters the angle -argument uses. For example, the following are two ways to draw an arc of .8 -inch radius from 0 to 135 degrees: -\begin{MEx}(3,2) - \SpecialCoor - \psarc(0,0){.8in}{0}{135} - \psarc(0,0){.8in}{0}{(-1,1)} -\end{MEx} -\vitem"!<ps>" Raw PostScript code. <ps> should expand to a number. The same -units are used as with <num>. -\end{description} - -\newbox\specialbox -\setbox\specialbox=\hbox{% - \bfseries - \begin{tabular}{|c|c|l|} - \hline - \emph{Coordinate} & \emph{Example} & \emph{Description} \\[2pt] - "(<x>,<y>)" & "(3,4)" & Cartesian coordinate.\\ - "(<r>;<a>)" & "(3;110)" & Polar coordinate.\\ - "(<node>)" & "(A)" & Center of <node>.\\ - "([<par>]<node>)" & "([angle=45]A)" & Relative to <node>.\\ - "(!<ps>)" & "(!5 3.3 2 exp)" & Raw PostScript.\\ - "(<coor1>|<coor2>)" & "(A|1in;30)" & Combination.\\ - \hline\hline - \emph{Angle} & \emph{Example} & \emph{Description} \\[2pt] - "<num>" & "45" & Angle.\\ - "(<coor>)" & "(-1,1)" & Coordinate (vector).\\ - "!<ps>" & "!33 sqrt" & Raw PostScript.\\ - \hline - \end{tabular}}% -\addtoquickref{center}{% - {\large\textbf{Special coordinates and angles}}\par - \leavevmode\box\specialbox} - -The command - \Mac \NormalCoor -disables the \n\SpecialCoor{} features. - -\Section{Overlays\label{S-overlays}} - -Overlays are mainly of interest for making slides, and the overlay macros -described in this section are mainly of interest to \TeX{} macro writers who -want to implement overlays in a slide macro package. For example, the -"seminar.sty" package, a \LaTeX{} style for notes and slides, uses PSTricks to -implement overlays. - -Overlays are made by creating an "\hbox" and then outputting the box several -times, printing different material in the box each time. The box is created by -the commands - \Mac \overlaybox < stuff >\Main\endoverlaybox -\LaTeX{} users can instead write: -\begin{LVerb*} - \begin{overlaybox} <stuff> \end{overlaybox} -\end{LVerb*} - -The material for overlay <string> should go within the scope of the command - \Mac \psoverlay{string} -<string> can be any string, after expansion. Anything not in the scope of any -\n\psoverlay{} command goes on overlay "main", and material within the scope of -{\UsageFont "\psoverlay{all}"} goes on all the overlays. \n\psoverlay\ -commands can be nested and can be used in math mode. - -The command - \Mac \putoverlaybox{string} -then prints overlay <string>. - -Here is an example: -\begin{example} - \overlaybox - \psoverlay{all} - \psframebox[framearc=.15,linewidth=1.5pt]{% - \psoverlay{main} - \parbox{3.5cm}{\raggedright - Foam Cups Damage Environment {\psoverlay{one} Less than - Paper Cups,} Study Says.}} - \endoverlaybox - - \putoverlaybox{main} \hspace{.5in} \putoverlaybox{one} -\end{example} - -\begin{drivers} Overlays use \n\pstVerb{} and \n\pstverbscale.\end{drivers} - -\section{The gradient fill style} - -\File{pst-grad} -The file "pst-grad.tex"/"pst-grad.sty", along with the PostScript header file -"pst-grad.pro", defines the "gradient" \p{fillstyle}, for gradiated shading. -This \p{fillstyle} uses the following parameters: -\begin{description} - \pitem[gradbegin=color] The starting and ending color. - \pitem[gradend=color] The color at the midpoint. - \pitem[gradlines=int] The number of lines. More lines means finer -gradiation, but slower printing. - \pitem[gradmidpoint=num] The position of the midpoint, as a fraction of the -distance from top to bottom. <num> should be between 0 and 1. - \pitem[gradangle=angle] The image is rotated by <angle>. -\end{description} - -\p{gradbegin} and \p{gradend} should preferably be "rgb" colors, but grays and -"cmyk" colors should also work. The definitions of the colors "gradbegin" and -"gradend" are: -\begin{LVerb} - \newrgbcolor{gradbegin}{0 .1 .95} - \newrgbcolor{gradend}{0 1 1} -\end{LVerb} -Here are two ways to change the gradient colors: -\begin{LVerb} - \newrgbcolor{gradbegin}{1 .4 0} -\end{LVerb} -and -\begin{LVerb} - \psset{gradbegin=blue} -\end{LVerb} - -Try this example: -\begin{LVerb} - \psframe[fillstyle=gradient,gradangle=45](10,-20) -\end{LVerb} - -% D.G. modification begin - Mar. 7, 2003 -%\section{Adding color to tables\label{S-colortab}} - -%\File{colortab} -%The file "colortab.tex"/"colortab.sty" contains macros that, when used with -%color commands such as those in PSTricks, let you color the cells and lines in -%tables. See "colortab.doc" for more information. -% D.G. modification end - -\Section{Typesetting text along a path} - -\File{pst-text} -The file "pst-text.tex"/"pst-text.sty" defines the command \n\pstextpath, for -typesetting text along a path. It is a remarkable trick, but there are some -caveats: - -\begin{itemize}\label{tp-res} - \item "pst-text.tex" only works with certain DVI-to-PS drivers. Here is what -is currently known: -\begin{itemize} - \item It works with Rokicki's "dvips". - \item ``Does not work'' means that it has no effect, for better or for worse. - \item This may work with other drivers. The requirement is that the driver - only use PostScript's "show" operator, unbound and unloaded, to show - characters. -\end{itemize} - - \item You must also have installed the PostScript header file "pst-text.pro", - and \n\pstheader{} must be properly defined in "pstricks.con" for your - driver. - - \item Like other PSTricks that involve rotating text, this works best with - PostScript (outline) fonts. - - \item PostScript rendering with "pst-text.tex" is slow. -\end{itemize} - -Because of all this, no samples are shown here. However, there is a test file -"tp-test.tex" and PostScript output "tp-test.ps" that are distributed with -PSTricks. - -Here is the command: - \Mac \pstextpath`[pos](x,y)'{graphics object}{text} - -<text> is placed along the path, from beginning to end, defined by the -PSTricks graphics object. (This object otherwise behaves normally. Set -\p{linestyle=none} if you don't want it to appear.) - -<text> can only contain characters. No TeX{} rules, no PSTricks, and no other -"\special"'s. (These things don't cause errors; they just don't work right.) -Math mode is OK, but math operators that are built from several characters -(e.g., large integral signs) may break. Entire boxes (e.g., "\parbox") are OK -too, but this is mainly for amusement. - -<pos> is either -\begin{center} - \begin{tabular}{cl} - l & justify on beginning of path\\ - c & center on path\\ - r & justify on end of path. - \end{tabular} -\end{center} -The default is "l". - -"(<x>,<y>)" is an offset. Characters are shifted distance <x> along path, and -are shifted up by <y>. ``Up'' means with respect to the path, at whatever -point on the path corresponding to the middle of the character. "(<x>,<y>)" -must be Cartesian coordinates. Both coordinates use \n\psunit{} as the default. -The default coordinate is "(0,\TPoffset)", where \n\TPoffset{} a command whose -default value is "-.7ex". This value leads to good spacing of the characters. -Remember that "ex" units are for the font in effect when \n\pstextpath{} -occurs, not inside the <text> argument. - -More things you might want to know: -\begin{itemize} - \item Like with "\rput" and the graphics objects, it is up to you to leave -space for "\pstextpath". - \item Results are unpredictable if <text> is wider than length of path. - \item "\pstextpath" leaves the typesetting to \TeX. It just intercepts the -"show" operator to remap the coordinate system. -\end{itemize} - -\Section{Stroking and filling character paths} - -\File{pst-char} -The file "pst-char.tex"/"pst-char.sty" defines the command: - \Mac \pscharpath`*[par]'{text} -It strokes and fills the <text> character paths using the PSTricks -\p{linestyle} and \p{fillstyle}. - -The restrictions on DVI-to-PS drivers listed on page \pageref{tp-res} for -"\pstextpath" apply to "\pscharpath". Furthermore, only outline (PostScript) -fonts are affected. - -Sample input and output files "chartest.tex" and "chartest.ps" are distributed -with PSTricks. - -With the optional "*", the character path is not removed from the PostScript -environment at the end. This is mainly for special hacks. For example, you can -use "\pscharpath*" in the first argument of "\pstextpath", and thus typeset -text along the character path of some other text. See the sample file -"denis1.tex". (However, you cannot combine "\pscharpath" and "\pstextpath" in -any other way. E.g., you cannot typeset character outlines along a path, and -then fill and stroke the outlines with "\pscharpath".) - -The command - \Mac \pscharclip`*[par]'{text} ... \Main \endpscharclip -works just like \n\pscharpath, but it also sets the clipping path to the -character path. You may want to position this clipping path using \n\rput{} -\emph{inside} \n\pscharclip's argument. Like \n\psclip{} and \n\endpsclip, -\n\pscharclip{} and \n\endpscharclip{} should come on the same page and should -be properly nested with respect to \TeX{} groups (unless \n\AltClipMode{} is -in effect). The file "denis2.tex" contains a sample of \n\pscharclip. - - -\section{Importing EPS files} - -PSTricks does not come with any facility for including Encapsulated PostScript -files, because there are other very good and well-tested macros for exactly -that, specially the "graphicx" package for \LaTeX, usable also with \TeX. - -What PSTricks \emph{is} good for is embellishing your EPS picture. You can -include an EPS file in in the argument of \n\rput, as in -\begin{LVerb} - \rput(3,3){\epsfbox{myfile.eps}} -\end{LVerb} -and hence you can include an EPS file in the \n\pspicture{} environment. Turn -on \n\psgrid, and you can find the coordinates for whatever graphics or text -you want to add. This works even when the picture has a weird bounding box, -because with the arguments to \n\pspicture{} you control the bounding box from -\TeX's point of view. - -This isn't always the best way to work with an EPS file, however. If the -PostScript file's bounding box is the size you want the resulting picture to -be, after your additions, then try -\begin{LVerb*} - \hbox{<picture objects> \includegraphics{<file.eps>} -\end{LVerb*} -This will put all your picture objects at the lower left corner of the EPS -file. - -If you need to determine the bounding box of an EPS file, then you can try of -the automatic bounding box calculating programs, such as "bbfig" (distributed -with Rokicki's "dvips"). However, all such programs are easily fooled; the -only sure way to determine the bounding box is visually. \n\psgrid{} is a good -tool for this. - -\Section{Exporting EPS files} - -\File{pst-eps} -You must load "pst-eps.tex" or "pst-eps.sty" to use the PSTricks macros -described in this section. - -If you want to export an EPS file that contains both graphics and text, then -you need to be using a DVI-to-PS driver that suports such a feature. If you -just want to export pure graphics, then you can use the \n\PSTricksEPS{} -command. Both of these options are described in this section. - -Newer versions of Rokicki's "dvips" support an "-E" option for creating EPS -files from \TeX{} ".dvi" files. E.g., -\[ - dvips foo.dvi -E -o foo.eps -\] -Your document should be a single page. "dvips" will find a tight bounding box -that just encloses the printed characters on the page. This works best with -outline (PostScript) fonts, so that the EPS file is scalable and resolution -independent. - -There are two inconvenient aspects of this method. You may want a different -bounding box than the one calculated by "dvips" (in particular, "dvips" -ignores all the PostScript generated by PSTricks when calculating the bounding -box), and you may have to go out of your way to turn off any headers and -footers that would be added by output routines. - -PSTricks contains an environment that tries to get around these two problems: -\begin{Ex} - \object \TeXtoEPS - " "<stuff>\\ - \object \endTeXtoEPS -\end{Ex} -This is all that should appear in your document, but headers and whatever that -would normally be added by output routines are ignored. "dvips" will again try -to find a tight bounding box, but it will treat <stuff> as if there was a -frame around it. Thus, the bounding box will be sure to include <stuff>, but -might be larger if there is output outside the boundaries of this box. If the -bounding box still isn't right, then you will have to edit the -\begin{LVerb*} - %%BoundingBox <llx lly urx ury> -\end{LVerb*} -specification in the EPS file by hand. - -If your goal is to make an EPS file for inclusion in other documents, then -"dvips -E" is the way to go. However, it can also be useful to generate an EPS -file from PSTricks graphics objects and include it in the same document,% -\footnote{See the preceding section on importing EPS files.} -rather than just including the PSTricks graphics directly, because \TeX{} gets -involved with processing the PSTricks graphics only when the EPS file is -initially created or updated. Hence, you can edit your file and preview the -graphics, without having to process all the PSTricks graphics each time you -correct a typo. This speed-up can be significant with complex graphics such as -"\pslistplot"'s with a lot of data. - -To create an EPS file from PSTricks graphics objects, use - \Mac \PSTtoEPS`[par]'{file}{graphics objects} -The file is created immediately, and hence you can include it in the same -document (after the \n\PSTtoEPS{} command) and as many times as you want. -Unlike with "dvips -E", only pure graphics objects are processed (e.g., -"\rput" commands have no effect). - -\n\PSTtoEPS{} cannot calculate the bounding box of the EPS file. You have to -specify it yourself, by setting the following parameters: -\begin{Ex} - \Par{bbllx=dim} - \Par{bblly=dim} - \Par{bburx=dim} - \Par{bbury=dim} -\end{Ex} -Note that if the EPS file is only to be included in a PSTricks picture with -\n\rput\, you might as well leave the default bounding box. - -\n\PSTricksEPS{} also uses the following parameters: -\begin{description} - \pitem[makeeps=none/new/all/all*] - This parameter determines which \n\PSTtoEPS\ commands just skip over their arguments, and which create files, as follows: - \begin{description} - \vitem"none" No files are created. - \vitem"new" Only those files not found {\em anywhere on the system\/} are created. - \vitem"all" All files are created. - \vitem"all*" All files are created, but you are asked for approval before existing files are deleted. - \end{description} - - \pitem[headerfile=files] - This parameter is for specifying PostScript header files that are to be -included in the EPS file. The argument should contain one or more file names, -separated by commas. If you have more than one file, however, the entire list -must be enclosed in braces "{}". - - \pitem[headers=none/all/user] - When "none", no header files are included. When "all", the header files used -by PSTricks plus the header files specified by the \p{headerfile} parameter -are included. When "user", only the header files specified by the -\p{headerfile} parameter are included. If the EPS file is to be included in a -\TeX{} document that uses the same PSTricks macros and hence loads the relevant -PSTricks header files anyway (in particular, if the EPS file is to be included -in the same document), then \p{headers} should be "none" or "user". -\end{description} - -\endinput -%% END psd-spec.tex diff --git a/Master/texmf-dist/doc/generic/pstricks/psd-text.tex b/Master/texmf-dist/doc/generic/pstricks/psd-text.tex deleted file mode 100644 index ebc44abd8d7..00000000000 --- a/Master/texmf-dist/doc/generic/pstricks/psd-text.tex +++ /dev/null @@ -1,260 +0,0 @@ -%% BEGIN psd-text.tex - -\part{Text Tricks\label{P-text}} - -\Section{Framed boxes\label{S-framebox}} - -The macros for framing boxes take their argument, put it in an "\hbox", and -put a PostScript frame around it. (They are analogous to \LaTeX's "\fbox"). -Thus, they are composite objects rather than pure graphics objects. In -addition to the graphics parameters for \n\psframe, these macros use the -following parameters: -\begin{description} - -\pitem[framesep=dim] - Distance between each side of a frame and the enclosed box. - -\pitem[boxsep=true/false] - When "true", the box that is produced is the size of the frame or whatever -that is drawn around the object. When "false", the box that is produced is the -size of whatever is inside, and so the frame is ``transparent'' to \TeX. This -parameter only applies to \n\psframebox, \n\pscirclebox, and \n\psovalbox. - -\end{description} - -Here are the three box-framing macros: -\begin{description} - -\oitem \psframebox{stuff} - - A simple frame (perhaps with rounded corners) is drawn using \n\psframe. The -"*" option is of particular interest. It generates a solid frame whose color -is \p{fillcolor} (rather than \p{linecolor}, as with the closed graphics -objects). Recall that the default value of \p{fillcolor} is "white", and so -this has the effect of blotting out whatever is behind the box. For example, -\begin{MEx}(3,2) - \pspolygon[fillcolor=gray,fillstyle=crosshatch*](0,0)(3,0) - (3,2)(2,2) - \rput(2,1){\psframebox*[framearc=.3]{Label}} -\end{MEx} - -\oitem \psdblframebox{stuff} - - This draws a double frame. It is just a variant of \n\psframebox, defined by -\begin{LVerb} - \newpsobject{psdblframebox}{psframebox}{doublesep=\pslinewidth} -\end{LVerb} -For example, -\begin{example} - \psdblframebox[linewidth=1.5pt]{% - \parbox[c]{6cm}{\raggedright A double frame is drawn - with the gap between lines equal to \texttt{doublesep}}} -\end{example} - -\oitem \psshadowbox{stuff} - - This draws a single frame, with a shadow. -\begin{example**} - \psshadowbox{\textbf{Great Idea!!}} -\end{example**} -You can get the shadow with \n\psframebox{} just be setting the \p{shadowsize} -parameter, but with \n\psframebox{} the dimensions of the box won't reflect the -shadow (which may be what you want!). - -\oitem \pscirclebox{stuff} - - This draws a circle. With \p{boxsep=true}, the size of the box is close to -but may be larger than the size of the circle. For example: -\begin{example**} - \pscirclebox{\begin{tabular}{c} You are \\ here \end{tabular}} -\end{example**} -is distributed with -\oitem \cput<{angle}\c~>{stuff} - - This combines the functions of \n\pscirclebox{} and \n\rput. It is like -\begin{LVerb*} - \rput{<angle>}(x0,y0){\pscirclebox*[<par>]{<stuff>}} -\end{LVerb*} -but it is more efficient. Unlike the \n\rput{} command, there is no argument -for changing the reference point; it is always the center of the box. Instead, -there is an optional argument for changing graphics parameters. For example -\begin{MEx*}(2,1) - \cput[doubleline=true](1,.5){\large $K_1$} -\end{MEx*} - -\oitem \psovalbox{stuff} - - This draws an ellipse. If you want an oval with square sides and rounded -corners, then use \n\psframebox{} with a positive value for \p{rectarc} or -\p{linearc} (depending on whether \p{cornersize} is "relative" or "absolute"). -Here is an example that uses \p{boxsep=false}: -\begin{example**} - "\parbox{\marginparwidth}{ - At the introductory price of - \psovalbox[boxsep=false,linecolor=darkgray]{\$13.99}, - it pays to act now! - "} -\end{example**} - -\oitem \psdiabox{stuff} - - \n\psdiabox{} draws a diamond. -\begin{example**} - \psdiabox[shadow=true]{\Large\textbf{Happy?}} -\end{example**} - -\oitem \pstribox{stuff} - - \n\pstribox{} draws a triangle. -\begin{example**} - \pstribox[trimode=R,framesep=5pt]{\Large\textbf{Begin}} -\end{example**} - The triangle points in the direction: -\begin{Ex} - \Par{trimode=*U/D/R/L} -\end{Ex} -If you include the optional "*", then an equilateral triangle is drawn, -otherwise, you get the minimum-area isosceles triangle. -\begin{example**} - \pstribox[trimode=*U]{\Huge Begin} -\end{example**} - -\end{description} - -You can define variants of these box framing macros using the \n\newpsobject{} -command. - -If you want to control the final size of the frame, independently of the -material inside, nest <stuff> in something like \LaTeX's "\makebox" command. - - -\Section{Clipping\label{S-clipping}} - -The command - \Mac \clipbox`[dim]'{stuff} -puts <stuff> in an "\hbox" and then clips around the boundary of the box, at a -distance <dim> from the box (the default is "0pt"). - -The \n\pspicture{} environment also lets you clip the picture to the boundary. - -The command - \Mac \psclip{graphics} \ldots\ \Main\endpsclip -sets the clipping path to the path drawn by the graphics object(s), until the -\n\endpsclip{} command is reached. \n\psclip{} and \n\endpsclip{} must be -properly nested with respect to \TeX{} grouping. Only pure graphics (those -described in Part \ref{P-graphics} and \n\pscustom) are permitted. An -"Overfull \hbox" warning indicates that the <graphics> argument contains -extraneous output or space. Note that the -graphics objects otherwise act as usual, and the \n\psclip{} does not otherwise -affect the surrounded text. Here is an example: -\begin{example**} - \parbox{4.5cm}{% - \psclip{\psccurve[linestyle=none](-3,-2) - (0.3,-1.5)(2.3,-2)(4.3,-1.5)(6.3,-2)(8,-1.5)(8,2)(-3,2)} - "\def\baselinestretch{.85}\small - ``One of the best new plays I have seen all year: cool, poetic, - ironic \ldots'' proclaimed \emph{The Guardian} upon the London - premiere of this extraordinary play about a Czech director and - his actress wife, confronting exile in America.\vspace{-1cm} - \endpsclip} -\end{example**} - -If you don't want the outline to be painted, you need to include -\p{linestyle=none} in the parameter changes. You can actually include more -than one graphics object in the argument, in which case the clipping path is -set to the intersection of the paths. - -\n\psclip{} can be a useful tool in picture environments. For example, here it -is used to shade the region between two curves: -\begin{MEx}(4,4) - \psclip{% - \pscustom[linestyle=none]{% - \psplot{.5}{4}{2 x div} - \lineto(4,4)} - \pscustom[linestyle=none]{% - \psplot{0}{3}{3 x x mul 3 div sub} - \lineto(0,0)}} - \psframe*[linecolor=gray](0,0)(4,4) - \endpsclip - \psplot[linewidth=1.5pt]{.5}{4}{2 x div} - \psplot[linewidth=1.5pt]{0}{3}{3 x x mul 3 div sub} - \psaxes(4,4) -\end{MEx} - -\begin{drivers} - The clipping macros use \n\pstverbscale{} and \n\pstVerb. Don't be surprised -if PSTricks's clipping does not work or causes problem---it is never robust. -"\endpsclip" uses "initclip". This can interfere with other clipping -operations, and especially if the \TeX{} document is converted to an -Encapsulated PostScript file. The command \n\AltClipMode{} causes \n\psclip{} -and \n\endpsclip{} to use "gsave" and "grestore" instead. This bothers some -drivers, especially if \n\psclip{} and \n\endpsclip{} do not end up on the same -page. -\end{drivers} - -\Section{Rotation and scaling boxes\label{S-rotation}} - -There are versions of the standard box rotation macros: -\begin{Ex} - \object \rotateleft{stuff} - \object \rotateright{stuff} - \object \rotatedown{stuff} -\end{Ex} -<stuff> is put in an "\hbox" and then rotated or scaled, leaving the -appropriate amount of spaces. Here are a few uninteresting examples: -\begin{example**} - \Large\bfseries \rotateleft{Left} \rotatedown{Down} \rotateright{Right} -\end{example**} - - -There are also two box scaling macros: -\begin{description} - -\mitem \psscalebox{num1 `num2'}{stuff} - - If you give two numbers in the first argument, <num1> is used to scale -horizontally and <num2> is used to scale vertically. If you give just one -number, the box is scaled by the same in both directions. You can't scale by -zero, but negative numbers are OK, and have the effect of flipping the box -around the axis. You never know when you need to do something like -\psscalebox{-1 1}{this} ("\psscalebox{-1 1}{this}"). - -\mitem \psscaleboxto\c~{stuff} - - This time, the first argument is a (Cartesian) coordinate, and the box is -scaled to have width \x{} and height (plus depth) \y{}. If one of the -dimensions is 0, the box is scaled by the same amount in both directions. For -example: -\begin{example**} - \psscaleboxto(4,2){Big and long} -\end{example**} - -\end{description} - -PSTricks defines LR-box environments for all these box rotation and scaling -commands: -\begin{LVerb} - \pslongbox{Rotateleft}{\rotateleft} - \pslongbox{Rotateright}{\rotateright} - \pslongbox{Rotatedown}{\rotatedown} - \pslongbox{Scalebox}{\psscalebox} - \pslongbox{Scaleboxto}{\psscaleboxto} -\end{LVerb} - -Here is an example where we \n\Rotatedown{} for the answers to exercises: -\begin{example**} - "\parbox{4cm}{\raggedright\noindent\hsize 4cm - Question: How do Democrats organize a firing squad? - - \begin{Rotatedown} - \parbox{\hsize}{Answer: First they get in a circle, \ldots\hss}% - \end{Rotatedown} - "} -\end{example**} - -See the documentation of the "fancybox" package for tips on rotating -a \LaTeX{} "table" or "figure" environment, and other boxes. - -\endinput - -%% END psd-text.tex diff --git a/Master/texmf-dist/doc/generic/pstricks/psd-tree.tex b/Master/texmf-dist/doc/generic/pstricks/psd-tree.tex deleted file mode 100644 index c7a7d78320e..00000000000 --- a/Master/texmf-dist/doc/generic/pstricks/psd-tree.tex +++ /dev/null @@ -1,816 +0,0 @@ -%% BEGIN psd-tree.tex - -\part{Trees\label{P-trees}} - -\Section{Overview} - -\File{pst-tree} -The node and node connections are perfect tools for making trees, but -positioning the nodes using "\rput" would be rather tedious.\footnote{% -Unless you have a computer program that generates the coordinates.} -The file "pstree.tex" / "pstree.sty" contains a high-level interface for -making trees. - -The tree commands are -\begin{Ex} - \object \pstree{<root>}{<successors>} - \object \psTree{<root>} <successors> \Main\endpsTree -\end{Ex} -These do the same thing, but just have different syntax. "\psTree" is the -``long'' version.\footnote{% -\LaTeX{} purists can write "\begin{psTree}" and "\end{psTree}" instead.} -These macros make a box that encloses all the nodes, and whose baseline passes -through the center of the root. - -Most of the nodes described in Section \ref{S-nodes} has a variant for use -within a tree. These variants are called tree nodes, and are described in -Section \ref{S-treenodes}. - -Trees and tree nodes are called \emph{tree objects}. The <root> of a tree -should be a single tree object, and the <successors> should be one or more -tree objects. Here is an example with only nodes: -\begin{example**} - \pstree[radius=3pt]{\Toval{root}}{\TC* \TC* \TC* \TC*} -\end{example**} -There is no difference between a terminal node and a root node, other than -their position in the \n\pstree{} command. - -Here is an example where a tree is included in the list of successors, and -hence becomes subtree: -\begin{example**} - \pstree[radius=3pt]{\Tp}{% - \TC* - \pstree{\TC}{\TC* \TC*} - \TC*} -\end{example**} - - -\Section{Tree Nodes} - -For most nodes described in Section \ref{S-nodes}, there is a variant for use -in trees, called a tree node. In each case, the name of the tree node is -formed by omitting "node" from the end of the name and adding "T" at the -beginning. For example, "\ovalnode" becomes "\Toval". Here is the list of such -tree nodes: -\begin{Ex} - \object \Tp`*[par]' - \object \Tc`*[par]'{dim} - \object \TC`*[par]' - \object \Tf`*[par]' - \object \Tdot`*[par]' - \object \Tr`*[par]'{stuff} - \object \TR`*[par]'{stuff} - \object \Tcircle`*[par]'{stuff} - \object \TCircle`*[par]'{stuff} - \object \Toval`*[par]'{stuff} - \object \Tdia`*[par]'{stuff} - \object \Ttri`*[par]'{stuff} -\end{Ex} - -The syntax of a tree node is the same as of its corresponding ``normal'' node, -except that: -\begin{itemize} - \item There is always an optional argument for setting graphics parameters, - even if the original node did not have one; - \item There is no argument for specifying the name of the node; - \item There is never a coordinate argument for positioning the node; and - \item To set the reference point with \n\Tr, set the \p{ref} parameter. -\end{itemize} - -Figure \ref{allnodes} gives a reminder of what the nodes look like. - -\begin{figure} -\begin{example*} - \small - \psset{armB=1cm, levelsep=3cm, treesep=-3mm, - angleB=-90, angleA=90, nodesepA=3pt} - \def\s#1{#1~{\tt\string#1}} - \def\b#1{#1{\tt\string#1}} - \def\psedge#1#2{\ncangle{#2}{#1}} - \psTree[treenodesize=1cm]{\Toval{Tree nodes}} - \s\Tp - \Tc{.5}~{\tt\string\Tc} - \s\TC - \psTree[levelsep=4cm,armB=2cm]{\Tp[edge=\ncline]} - \b\Tcircle - \s\Tdot - \TCircle[radius=1.2]{\tt\string\TCircle} - \Tn - \b\Toval - \b\Ttri - \b\Tdia - \endpsTree - \s\Tf - \b\Tr - \b\TR - \endpsTree -\end{example*} -\caption{The tree nodes.\label{allnodes}} -\end{figure} - -The difference between "\Tr" and "\TR" (variants of "\rnode" and "\Rnode", -respectively) is important with trees. Usually, you want to use "\TR" with -vertical trees because the baselines of the text in the nodes line up -horizontally. For example: -\begin{example**} - $ - \pstree[nodesepB=3pt]{\Tcircle{X}}{% - \TR{\tilde{\tilde{X}}} - \TR{x} - \TR{y}} - $ -\end{example**} -Compare with this example, which uses \n\Tr: -\begin{example**} - $ - \pstree[nodesepB=3pt]{\Tcircle{X}}{% - \Tr{\tilde{\tilde{X}}} - \Tr{x} - \Tr{y}} - $ -\end{example**} - -There is also a null tree node: - \Mac \Tn -It is meant to be just a place holder. Look at the tree in Figure -page~\pageref{allnodes}. The bottom row has a node missing in the middle. -\n\Tn{} was used for this missing node. - -There is also a special tree node that doesn't have a ``normal'' version and -that can't be used as the root node of a whole tree: - \Mac \Tfan`*[par]' -This draws a triangle whose base is -\begin{Ex} - \Par{fansize=dim} -\end{Ex} -and whose opposite corner is the predecessor node, adjusted by the value of -\p{nodesepA} and \p{offsetA}. -For example: -\begin{example**} - \pstree[dotstyle=oplus,dotsize=8pt,nodesep=2pt]{\Tcircle{11}}{% - \Tdot - \pstree{\Tfan}{\Tdot} - \pstree{\Tdot}{\Tfan[linestyle=dashed]}} -\end{example**} - - -\Section{Tree orientation} - -Trees can grow down, up, right or left, depending on the -\begin{Ex} - \Par{treemode=D/U/R/L} -\end{Ex} -parameter. - -Here is what the previous example looks like when it grows to the right: -\begin{example**} - \pstree[dotstyle=oplus,dotsize=8pt,nodesep=2pt,treemode=R] - {\Tcircle{11}}{% - \Tdot - \pstree{\Tfan}{\Tdot} - \pstree{\Tdot}{\Tfan[linestyle=dashed]}} -\end{example**} - -You can change the \p{treemode} in the middle of the tree. -For example, here is a tree that grows up, and that has a subtree which grows -to the left: -\begin{example**} - \footnotesize - \pstree[treemode=U,dotstyle=otimes,dotsize=8pt,nodesep=2pt] - {\Tdot}{% - \pstree[treemode=L]{\Tdot}{\Tcircle{1} \Tcircle{2}} - \pstree{\Tdot}{\Tcircle{3} \Tcircle{4}}} -\end{example**} - -Since you can change a tree's orientation, it can make sense to include a tree -(<treeB>) as a root node (of <treeA>). This makes a single logical tree, whose -root is the root of <treeB>, and that has successors going off in different -directions, depending on whether they appear as a successor to <treeA> or to -<treeB>. -\begin{example**} - \pstree{\pstree[treemode=L]{\Tcircle{root}}{\Tr{B}}}{% - \Tr{A1} - \Tr{A2}} -\end{example**} - -%%DG: to do - -On a semi-related theme, note that any node that creates an LR-box can contain -a tree. However, nested trees of this kind are not related in any way to the -rest of the tree. Here is an example: -\begin{example**} - \psTree{\Tcircle{% - \pstree[treesep=0.4,levelsep=0.6, - nodesepB=-6pt]{\Tdot}{% - \TR{a} \TR{b}}}} - \TC - \TC - \endpsTree -\end{example**} - -When the tree grows up or down, the successors are lined up from left to right -in the order they appear in \n\pstree. When the tree grows to the left or -right, the successors are lined up from top to bottom. As an afterthought, you -might want to flip the order of the nodes. The -\begin{Ex} - \Par{treeflip=true/false} -\end{Ex} -let's you do this. For example: -\begin{example**} - \footnotesize - \pstree[treemode=U,dotstyle=otimes,dotsize=8pt, - nodesep=2pt,treeflip=true]{\Tdot}{% - \pstree[treemode=R]{\Tdot}{\Tcircle{1} \Tcircle{2}} - \pstree{\Tdot}{\Tcircle{3} \Tcircle{4}}} -\end{example**} -Note that I still have to go back and change the \p{treemode} of the subtree -that used to grow to the left. - - -\Section{The distance between successors} - -The distance between successors is -\begin{Ex} - \Par{treesep=dim} -\end{Ex} -The rest of this section describes ways to fine-tune the spacing between -successors. - -You can change the method for calculating the distance between subtrees by -setting the -\begin{Ex} - \Par{treefit=tight/loose} -\end{Ex} -parameter. Here are the two methods: -\begin{description} - \item[tight] When \p{treefit=tight}, which is the default, \p{treesep} is - the minimum distance between each of the levels of the subtrees. - \item[loose] When \p{treefit=loose}, \p{treesep} is the distance between the - subtrees' bounding boxes. Except when you have large intermediate nodes, the - effect is that the horizontal distance (or vertical distance, for horizontal - trees) between all the terminal nodes is the same (even when they are on - different levels).\footnote{% - When all the terminal nodes are on the same level, and the intermediate - nodes are not wider than the base of their corresponding subtrees, then - there is no difference between the two methods.} -\end{description} - -Compare: -\begin{center} -\tabcolsep=1cm -\begin{tabular}{cc} - \psset{radius=2pt} - \pstree{\TC*}{% - \TC - \pstree{\TC*}{% - \pstree{\Tc{3pt}}{\TC \TC} - \TC*}} - & - \psset{radius=2pt} - \pstree[treefit=loose]{\TC*}{% - \TC - \pstree{\TC*}{% - \pstree{\Tc{3pt}}{\TC \TC} - \TC*}} -\end{tabular} -\end{center} - -With \p{treefit=loose}, trees take up more space, but sometimes the structure -of the tree is emphasized. - -%Another (orthogonal) way to highlight the structure of the tree is by setting -%\begin{Ex} -% \Par{xtreesep=dim} -%\end{Ex} -%to a positive value. The effect is that adjacent nodes with different parents -%are farther apart than adjacent nodes with the same parent.\footnote{% -%When \p{treefit=tight}, the minimum distance between levels other than the top -%of the subtrees is increased by \p{xtreesep}. When \p{treefit=loose}, the -%minimum distance between subtrees is increased by \p{xtreesep}}. - -%This would have no effect in the previous two examples, but compare the -%spacing between the two subtrees in -%\begin{example**} -% \psTree[radius=2pt,levelsep=1.5,xtreesep=.25cm] \TC* \\ -% \pstree{\TC*}{\TC* \TC*} -% \pstree{\TC*}{\TC* \TC*} -% \endpsTree -%\end{example**} -%with the spacing in -%\begin{example**} -% \psTree[radius=2pt,levelsep=1.5] \TC* \\ -% \pstree{\TC*}{\TC* \TC*} -% \pstree{\TC*}{\TC* \TC*} -% \endpsTree -%\end{example**} - -Sometimes you want the spacing between the centers of the nodes to be regular -even though the nodes have different sizes. If you set -\begin{Ex} - \Par{treenodesize=dim} -\end{Ex} -to a non-negative value, then PSTricks sets the width (or height+depth for -vertical trees) to \p{treenodesize}, \emph{for the purpose of calculating the -distance between successors}. - -For example, ternary trees look nice when they are symmetric, as in the -following example: -\begin{example**} - \pstree[nodesepB=-8pt,treenodesize=.85]{\Tc{3pt}}{% - \TR{$x=y$} - \TR{$x_1=y_1$} - \TR{$x_{11}=y_{11}$}}%$ -\end{example**} -Compare with this example, where the spacing varies with the size of the -nodes: -\begin{example**} - \pstree[nodesepB=-8pt]{\Tc{3pt}}{% - \TR{$x=y$} - \TR{$x_1=y_1$} - \TR{$x_{11}=y_{11}$}}%$ -\end{example**} - -Finally, if all else fails, you can adjust the distance between two successors -by inserting - \Mac \tspace{dim} -between them: -\begin{example**} - \pstree{\Tc{3pt}}{% - \Tdia{foo} - \tspace{-0.5} - \Toval{and} - \Ttri{bar}} -\end{example**} - -\Section{Spacing between the root and successors} - -The distance between the center lines of the tree levels is: -\begin{Ex} - \Par{levelsep=*dim} -\end{Ex} - -If you want the spacing between levels to vary with the size of the levels, -use the * convention. Then \p{levelsep} is the distance between the bottom of -one level and the top of the next level (or between the sides of the two -levels, for horizontal trees). - -Note: PSTricks has to write some information to your ".aux" file if using -\LaTeX, or to "\jobname.pst" otherwise, in order to calculate the spacing. -You have to run your input file a few times before PSTricks gets the spacing -right. - -%%DG: to do -%You are most likely to want to set \p{varlevelsep} to "true" in horizontal -trees. Compare the following example: -\begin{example} - \def\psedge#1#2{\ncdiagg[nodesep=3pt,angleA=180,armA=0]{#2}{#1}} - \pstree[treemode=R,levelsep=*1cm] - {\Tr{George Alexander Kopf VII}}{% - \pstree{\Tr{Barry Santos}}{\Tr{James Kyle} \Tr{Ann Ada}} - \pstree{\Tr{Terri Maloney}}{\Tr{Uwe Kopf} \Tr{Vera Kan}}} -\end{example} -with this one, were the spacing between levels is fixed: -\begin{example} - \def\psedge#1#2{\ncdiagg[nodesep=3pt,angleA=180,armA=0]{#2}{#1}} - \pstree[treemode=R,levelsep=3cm] - {\Tr{George Alexander Kopf VII}}{% - \pstree{\Tr{Barry Santos}}{\Tr{James Kyle} \Tr{Ann Ada}} - \pstree{\Tr{Terri Maloney}}{\Tr{Uwe Kopf} \Tr{Vera Kan}}} -\end{example} - -%The center of the root node of a tree is positioned above the midpoint between -%the centers of the two outer successors. If you want the root to be positioned -%drectly above one of the successors, put the command -% \Mac \treecenter -%right \emph{after} that successor. For example: -%\begin{example**} -% \def\myfan#1{\Tfan[fillstyle=solid,fillcolor=#1]\treecenter}% -% \pstree{\Tcircle{$x_2$}}{% -% \pstree{\Tcircle{$x_1$}}{% -% \pstree{\Tcircle{$x_0$}}{\myfan{black}} -% \myfan{gray}} -% \myfan{white}} -%\end{example**} - -%Here is another interesting example: -%\begin{example} -% \def\psedge{\ncangle[angleA=0,angleB=90]} -% \pstree[treesep=10pt]{\Tcircle[name=after]{$x_0$}}{% -% \Tfan[fillstyle=solid,fillcolor=black] -% \treecenter -% \pstree{\Tcircle{$x_1$}}{\Tfan[fillstyle=solid,fillcolor=darkgray]} -% \pstree{\Tcircle{$x_2$}}{\Tfan[fillstyle=solid,fillcolor=gray]} -% \pstree{\Tcircle{$x_3$}}{\Tfan[fillstyle=solid,fillcolor=lightgray]} -% \pstree{\Tcircle{$x_4$}}{\Tfan[fillstyle=solid,fillcolor=white]}} -%\end{example} - - -\Section{Edges} - -Right after you use a tree node command, "\pssucc" is equal to the name of the -node, and "\pspred" is equal to the name of the node's predecessor. Therefore, -you can draw a line between the node and its predecessor by inserting, for -example, -\begin{LVerbatim} - \ncline{\pspred}{\pssucc} -\end{LVerbatim} - -To save you the trouble of doing this for every node, each tree node executes -\begin{LVerbatim} - \psedge{\pspred}{\pssucc} -\end{LVerbatim} -The default definition of "\psedge" is "\ncline", but you can redefine it as -you please with "\def" or \LaTeX's "\renewcommand". - -For example, here I use \n\ncdiag, with \p{armA=0}, to get all the node -connections to emanate from the same point in the predecessor:\footnote{% -\LaTeX{} users can instead type: -\begin{LVerbatim} - \renewcommand{\psedge}{\ncdiag[armA=0,angleB=180,armB=1cm]} -\end{LVerbatim} -} -\begin{example} - \def\psedge{\ncdiag[armA=0,angleB=180,armB=1cm]} - \pstree[treemode=R,levelsep=3.5cm,framesep=2pt] - {\Tc{6pt}}{% - \small \Tcircle{K} \Tcircle{L} \Tcircle{M} \Tcircle{N}} -\end{example} - -Here is an example with \n\ncdiagg. Note the use of a negative \p{armA} value -so that the corners of the edges are vertically aligned, even though the nodes -have different sizes: -\begin{example} - $ - \def\psedge#1#2{% - \ncdiagg[angleA=180, armA=-3cm,nodesep=4pt]{#2}{#1}} - % Or: \renewcommand{\psedge}[2]{ ... } - \pstree[treemode=R, levelsep=5cm]{\Tc{3pt}}{% - \Tr{z_1\leq y} - \Tr{z_1<y\leq z_2} - \Tr{z_2<y\leq x} - \Tr{x<y}} - $ -\end{example} - -Another way to define \n\psedge{} is with the -\begin{Ex} - \Par{edge=command} -\end{Ex} -parameter. Be sure to enclose the value in braces "{}" if it contains commas -or other parameter delimiters. This gets messy if your command is long, and -you can't use arguments like in the preceding example, but for simple changes -it is useful. For example, if I want to switch between a few node connections -frequently, I might define a command for each node connection, and then use -the \p{edge} parameter. -\begin{example**} - \def\dedge{\ncline[linestyle=dashed]} - \pstree[treemode=U,radius=2pt]{\Tc{3pt}}{% - \TC*[edge=\dedge] - \pstree{\Tc{3pt}}{\TC*[edge=\dedge] \TC*} - \TC*} -\end{example**} - -You can also set \n{edge=none} to suppress the node connection. - -If you want to draw a node connection between two nodes that are not direct -predecessor and successor, you have to give the nodes a name that you can -refer to, using the \p{name} parameter. For example, here I connect two nodes -on the same level: -\begin{example**} - \pstree[nodesep=3pt,radius=2pt]{\Toval{nature}}{% - \pstree{\Tc[name=top]{3pt}}{\TC* \TC*} - \pstree{\Tc[name=bot]{3pt}}{\TC* \TC*}} - \ncline[linestyle=dashed]{top}{bot} -\end{example**} - -We conclude with the more examples. - -\begin{example**} - \def\psedge{\nccurve[angleB=180, nodesepB=3pt]} - \pstree[treemode=R, treesep=1.5, levelsep=3.5]% - {\Toval{root}}{\Tr{X} \Tr{Y} \Tr{Z}} -\end{example**} - -\begin{example**} - \pstree[nodesepB=3pt, arrows=->, xbbl=15pt, - xbbr=15pt, levelsep=2.5cm]{\Tdia{root}}{% - $ - \TR[edge={\ncbar[angle=180]}]{x} - \TR{y} - \TR[edge=\ncbar]{z} - $} -\end{example**} - -\begin{example**} - \psset{armB=1cm, levelsep=3cm, treesep=1cm, - angleB=-90, angleA=90, arrows=<-, nodesepA=3pt} - \def\psedge#1#2{\ncangle{#2}{#1}} - \pstree[radius=2pt]{\Ttri{root}}{\TC* \TC* \TC* \TC*} -\end{example**} - - -\Section{Edge and node labels} - -Right after a node, an edge has typically been drawn, and you can attach -labels using \n\ncput\, \n\tlput, etc. - -With \n\tlput, \n\trput, \n\taput{} and \n\tbput, you can align the labels -vertically or horizontally, just like the nodes. This can look nice, at least -if the slopes of the node connections are not too different. -\begin{example**} - \pstree[radius=2pt]{\Tp}{% - \psset{tpos=.6} - \TC* \tlput{k} - \pstree{\Tc{3pt} \tlput[labelsep=3pt]{r}}{% - \TC* \tlput{j} - \TC* \trput{i}} - \TC* \trput{m}} -\end{example**} -Within trees, the \p{tpos} parameter measures this distance from the -predecessor to the successor, whatever the orientation of the true. -(Outside of trees it measures the distance from the top to bottom or left to -right nodes.) - -PSTricks also sets \p{shortput=tab} within trees. This is a special -\p{shortput} option that should not be used outside of trees. It implements -the following abbreviations, which depend of the orientation of the true: -\begin{center} -\begin{tabular}{ccc} - & \multicolumn{2}{c}{Short for:}\\ - \emph{Char.} & \emph{Vert.} & \emph{Horiz.}\\[2pt] - "^" & \n\tlput & \n\taput \\ - "_" & \n\trput & \n\tbput -\end{tabular} -\end{center} -(The scheme is reversed if \p{treeflip=true}.) -\begin{example**} - \psset{tpos=.6} - \pstree[treemode=R, thistreesep=1cm, - thislevelsep=3cm,radius=2pt]{\Tc{3pt}}{% - \pstree[treemode=U, xbbr=20pt]{\Tc{3pt}^{above}}{% - \TC*^{left} - \TC*_{right}} - \TC*^{above} - \TC*_{below}} -\end{example**} - -You can change the character abbreviations with - \Mac \MakeShortTab{<char1>}{<char2>} - -The "\n*put" commands can also give good results: -\begin{example**} - \psset{npos=.6,nrot=:U} - \pstree[treemode=R, thistreesep=1cm, - thislevelsep=3cm]{\Tc{3pt}}{% - \Tc{3pt}\naput{above} - \Tc*{2pt}\naput{above} - \Tc*{2pt}\nbput{below}} -\end{example**} - -You can put labels on the nodes using \n\nput. However, \n\pstree{} won't take -these labels into account when calculating the bounding boxes. - -There is a special node label option for trees that does keep track of the -bounding boxes: - \Mac ~`*[par]'{stuff} -Call this a ``tree node label''. - -Put a tree node label right after the node to which it applies, before any -node connection labels (but node connection labels, including the short forms, -can follow a tree node label). The label is positioned directly below the node -in vertical trees, and similarly in other trees. For example: -\begin{example**} - \pstree[radius=2pt]{\Tc{3pt}\nput{45}{\pssucc}{root}}{% - \TC*~{$h$} \TC*~{$i$} \TC*~{$j$} \TC*~{$k$}} -\end{example**} -Note that there is no ``long form'' for this tree node label. However, you can -change the single character used to delimit the label with - \Mac \MakeShortTnput{<char1>} -If you find it confusing to use a single character, you can also use a command -sequence. E.g., -\begin{LVerb} - \MakeShortTnput{\tnput} -\end{LVerb} - -You can have multiple labels, but each successive label is positioned relative -to the bounding box that includes the previous labels. Thus, the order in -which the labels are placed makes a difference, and not all combinations will -produce satisfactory results. - -You will probably find that the tree node label works well for terminal nodes, -without your intervention. However, you can control the tree node labels be -setting several parameters. - -To position the label on any side of the node ("l"eft, "r"ight, "a"bove or -"b"elow), set: -\begin{Ex} - \Par{tnpos=l/r/a/b} -\end{Ex} -\begin{example**} - \psframebox{% - \pstree{\Tc{3pt}~[tnpos=a,tndepth=0pt,radius=4pt]{root}}{% - \TC*~[tnpos=l]{$h$} - \TC*~[tnpos=r]{$i$}}} -\end{example**} -When you leave the argument empty, which is the default, PSTricks chooses the -label position is automatically. - -To change the distance between the node and the label, set -\begin{Ex} - \Par{tnsep=<dim>} -\end{Ex} -When you leave the argument empty, which is the default, PSTricks uses the -value of \p{labelsep}. When the value is negative, the distance is measured -from the center of the node. - -When labels are positioned below a node, the label is given a minimum height -of -\begin{Ex} - \Par{tnheight=<dim>}(\string\ht\string\strutbox) -\end{Ex} -Thus, if you add labels to several nodes that are horizontally aligned, and if -either these nodes have the same depth or \p{tnsep} is negative, and if the -height of each of the labels is no more than \p{tnheight}, then the labels -will also be aligned by their baselines. The default is "\ht\strutbox", which -in most \TeX{} formats is the height of a typical line of text in the current -font. Note that the value of \p{tnheight} is not evaluated until it is used. - -The positioning is similar for labels that go below a node. The label is given -a minimum \emph{depth} of -\begin{Ex} - \Par{tndepth=<dim>}(\string\dp\string\strutbox) -\end{Ex} - -For labels positioned above or below, the horizontal reference point of the -label, i.e., the point in the label directly above or below the center of the -node, is set by the \p{href} parameter. - -When labels are positioned on the left or right, the right or left edge of the -label is positioned distance \p{tnsep} from the node. The vertical point that -is aligned with the center of the node is set by -\begin{Ex} - \Par{tnyref=<num>} -\end{Ex} -When you leave this empty, \p{vref} is used instead. Recall that \p{vref} -gives the vertical \emph{distance} from the baseline. Otherwise, the -\p{tnyref} parameter works like the \p{yref} parameter, giving the fraction of -the distance from the bottom to the top of the label. - -\Section{Details} - -PSTricks does a pretty good job of positioning the nodes and creating a box -whose size is close to the true bounding box of the tree. However, PSTricks -does not take into account the node connections or labels when calculating the -bounding boxes, except the tree node labels. - -If, for this or other reasons, you want to fine tune the bounding box of the -nodes, you can set the following parameters: -\begin{Ex} - \Par{bbl=dim} - \Par{bbr=dim} - \Par{bbh=dim} - \Par{bbd=dim} - \Par{xbbl=dim} - \Par{xbbr=dim} - \Par{xbbh=dim} - \Par{xbbd=dim} -\end{Ex} -The "x" versions increase the bounding box by <dim>, and the others set the -bounding box to <dim>. There is one parameter for each direction from the -center of the node, \textbf{l}eft, \textbf{r}ight, \textbf{h}eight, and -\textbf{d}epth. - -These parameters affect trees and nodes, and subtrees that switch directions, -but not subtrees that go in the same direction as their parent tree (such -subtrees have a profile rather than a bounding box, and should be adjusted by -changing the bounding boxes of the constituent nodes). - -Save any fiddling with the bounding box until you are otherwise finished with -the tree. - -You can see the bounding boxes by setting the -\begin{Ex} - \Par{showbbox=true/false} -\end{Ex} -parameter to "true". To see the bounding boxes of all the nodes in a tree, you -have to set this parameter before the tree. - -In the following example, the labels stick out of the bounding box: -\begin{example**} - \psset{tpos=.6,showbbox=true} - \pstree[treemode=U]{\Tc{5pt}}{% - \TR{foo}^{left} - \TR{bar}_{right}} -\end{example**} -Here is how we fix it: -\begin{example**} - \psset{tpos=.6,showbbox=true} - \pstree[treemode=U,xbbl=8pt,xbbr=14pt]{\Tc{5pt}}{% - \TR{foo}^{left} - \TR{bar}_{right}} -\end{example**} -Now we can frame the tree: -\begin{example**} - \psframebox[fillstyle=solid,fillcolor=lightgray,framesep=14pt, - linearc=14pt,cornersize=absolute,linewidth=1.5pt]{% - \psset{tpos=.6,border=1pt,nodesepB=3pt} - \pstree[treemode=U,xbbl=8pt,xbbr=14pt]{% - \Tc[fillcolor=white,fillstyle=solid]{5pt}}{% - \TR*{foo}^{left} - \TR*{bar}_{right}}} -\end{example**} -We would have gotten the same result by changing the bounding box of the two -terminal nodes. - -To skip levels, use -\begin{Ex} - \object \skiplevel`*[par]'{nodes or subtrees} - \object \skiplevels`*[par]'{int} <nodes or subtrees> \string\endskiplevels -\end{Ex} -These are kind of like subtrees, but with no root node. -\begin{example} - \pstree[treemode=R,levelsep=1.8,radius=2pt]{\Tc{3pt}}{% - \skiplevel{\Tfan} - \pstree{\Tc{3pt}}{% - \TC* - \skiplevels{2} - \pstree{\Tc{3pt}}{\TC* \TC*} - \TC* - \endskiplevels - \pstree{\Tc{3pt}}{\TC* \TC*}}} -\end{example} -The profile at the missing levels is the same as at the first non-missing -level. You can adjust this with the bounding box parameters. You get greatest -control if you use nested \n\skiplevel{} commands instead of \n\skiplevels. - -\begin{example} - \large - \psset{radius=6pt, dotsize=4pt} - \pstree[thislevelsep=0,edge=none,levelsep=2.5cm]{\Tn}{% - \pstree{\TR{Player 1}}{\pstree{\TR{Player 2}}{\TR{Player 3}}} - \psset{edge=\ncline} - \pstree - {\pstree[treemode=R]{\TC}{\Tdot ~{(0,0,0)} ^{N}}}{% - \pstree{\TC[name=A] ^{L}}{% - \Tdot ~{(-10,10.-10)} ^{l} - \pstree{\TC[name=C] _{r}}{% - \Tdot ~{(3,8,-4)} ^{c} - \Tdot ~{(-8,3,4)} _{d}}} - \pstree{\TC[name=B] _{R}}{% - \Tdot ~{(10,-10.0)} ^{l} - \pstree{\TC[name=D]_{r}}{% - \Tdot ~{(4,8,-3)} ^{c} - \Tdot ~{(0,-5,0)} _{d}}}}} - \ncbox[linearc=.3,boxsize=.3,linestyle=dashed,nodesep=.4]{A}{B} - \ncarcbox[linearc=.3,boxsize=.3,linestyle=dashed, - arcangle=25,nodesep=.4]{D}{C} -\end{example} - -\Section{The scope of parameter changes} - -\p{edge} is the only parameter which, when set in a tree node's parameter -argument, affects the drawing of the node connection (e.g., if you want to -change the \p{nodesep}, your edge has to include the parameter change, or you -have to set it before the node). - -As noted at the beginning of this section, parameter changes made with -\n\pstree{} affect all subtrees. However, there are variants of some of these -parameters for making local changes, i.e, changes that affects only the -current level: -\begin{Ex} - \Par{thistreesep=dim} - \Par{thistreenodesize=dim} - \Par{thistreefit=tight/loose} - \Par{thislevelsep=dim} -\end{Ex} -For example: -\begin{example**} - \pstree[thislevelsep=.5cm,thistreesep=2cm,radius=2pt]{\Tc*{3pt}}{% - \pstree{\TC*}{\TC* \TC*} - \pstree{\TC*}{\TC* \TC*}} -\end{example**} - -There are some things you may want set uniformly across a level in the tree, -such as the \p{levelsep}. At level <n>, the command "\pstreehook<roman(n)>" -(e.g., "\pstreehookii") is executed, if it is defined (the root node of the -whole tree is level 0, the successor tree objects and the node connections -from the root node to these successors is level 1, etc.). In the following -example, the \p{levelsep} is changed for level 2, without having to set the -\p{thislevelsep} parameter for each of the three subtrees that make of level -2: -\begin{example*} - \[ - \def\pstreehookiii{\psset{thislevelsep=3cm}} - \pstree[treemode=R,levelsep=1cm,radius=2pt]{\Tc{4pt}}{% - \pstree{\TC*}{% - \pstree{\TC*}{\Tr{X_1} \Tr{X_2}} - \pstree{\TC*}{\Tr{Y_1} \Tr{Y_2}}} - \pstree{\TC*}{% - \pstree{\TC*}{\Tr{K_1} \Tr{K_2}} - \pstree{\TC*}{\Tr{J_1} \Tr{J_2}}}} - \] -\end{example*} - -\endinput - -%% END psd-tree.tex diff --git a/Master/texmf-dist/doc/generic/pstricks/pst-user.cls b/Master/texmf-dist/doc/generic/pstricks/pst-user.cls deleted file mode 100644 index 19cd07b6ee6..00000000000 --- a/Master/texmf-dist/doc/generic/pstricks/pst-user.cls +++ /dev/null @@ -1,1111 +0,0 @@ -%% BEGIN pst-user.cls - -%% Macros for typesetting "pst-user.tex" v97. - -%DG \errorcontextlines=100\relax - -\NeedsTeXFormat{LaTeX2e} - -\ProvidesClass{pst-user}[2003/03/03 Class for PSTricks User's Guide (TvZ,RN,DG)] - -\DeclareOption*{\PassOptionsToClass{\CurrentOption}{article}} - -\ProcessOptions\relax -\LoadClass{article} - -% Packages -\RequirePackage{pstcol} -\RequirePackage{pst-coil} -\RequirePackage{pst-plot} -\RequirePackage{pst-tree} - -\RequirePackage{fancybox} % Use for the Quick Reference -\RequirePackage{fancyvrb} - -\RequirePackage[dvips]{geometry} - -% The paper dimensions for `dvips' or `VTeX' or `pdfTeX' -% Why not `\AtEndOfClass' or `\AtBeginDocument'? RN - -\RequirePackage{url} -\RequirePackage[ps2pdf,hyperfootnotes=false,colorlinks=true,bookmarks=true] - {hyperref}[2000/03/02] -%\AtEndOfClass{% -% \RequirePackage[ps2pdf,hyperfootnotes=false,colorlinks=false,% -% bookmarks=false] -% %pdfpagelabels,plainpages=false] -% {hyperref}[2000/03/02]} - -%\AtEndOfClass{\AtBeginDocument{\RequirePackage{showframe}}} - -% Fonts related packages -\usepackage[T1]{fontenc} -\RequirePackage{times} -%\RequirePackage{mathptmx} -\RequirePackage[scaled]{helvet} -%\RequirePackage{courier} -\RequirePackage{pifont} - -% Title, version and date -\def\thetitle{PSTricks: User's Guide} -\let\theheadertitle\thetitle % Used with twoside option. -\let\fileversion\Version -\let\filedate\Date - -% Paragraphs are marked by large space rather than indentation: -\parindent 0pt -\parskip 7pt plus 1pt minus 1pt - -% Page layout and various dimensions - -%%% TODO: Using the `geometry' package and `\DeclareOption' -- RN - -% These are for 8.5inx11in paper: -\oddsidemargin 5cm -\evensidemargin 5cm -\textwidth 11.5cm - -% Total bottom margin 1in, text height 8.8in -\topmargin\z@ -\textheight 8.8in -\footskip .625in - -% No headers, 1in top margin -\headheight 0pt -\headsep 0pt - -% Marginal notes always on left. -\marginparwidth 3.5cm -\marginparsep .5cm -\reversemarginpar - -% Now adjust margins for a4 paper size: -\ifdim\paperwidth=210mm \papersizeadjust\fi - -%DG % Now adjust margins for different paper size: -%DG % The a4 option sets \paperwidth and \paperheight for a4 paper: -%DG \@ifundefined{paperwidth}% -%DG {% -%DG \def\paperwidth{8.5in} -%DG \def\paperheight{11in} -%DG }{% -%DG \@tempdima=\paperwidth\relax -%DG \advance\@tempdima-8.5in -%DG \divide\@tempdima 2 -%DG \advance\oddsidemargin\@tempdima -%DG \advance\evensidemargin\@tempdima -%DG \@tempdima=\paperheight\relax -%DG \advance\@tempdima-11in -%DG \divide\@tempdima 2 -%DG \advance\topmargin\@tempdima -%DG } - -%DG % Now adjust left and right margins for twosided printing: -%DG \if@twoside -%DG \advance\oddsidemargin.75cm -%DG \advance\evensidemargin-.75cm -%DG \fi - -%%%%%%%%%%%%%%%%%%%% Various customizations %%%%%%%%%%%%%%%%%%%% - -\def\arraystretch{1.2} - -\hfuzz 1pt - -\def\twosideclearpage{% - \clearpage - \if@twoside - \ifodd\c@page\else - \thispagestyle{empty}% - \null\leavevmode - \clearpage - \fi - \fi} - - - -% Paragraphs are marked by large space rather than indentation: -\setlength{\parindent}{0pt} -\setlength{\parskip}{7pt plus 1pt minus 1pt} - -% Reduce \topsep: -\def\@listI{% - \leftmargin\leftmargini - \parsep 5\p@ plus2.5\p@ minus\p@ - %\topsep 10\p@ plus4\p@ minus6\p@ - \topsep 5\p@ plus2\p@ minus2\p@ - \itemsep 5\p@ plus2.5\p@ minus\p@} -\let\@listi\@listI -\@listi -\def\@listii{% - \leftmargin\leftmarginii - \labelwidth\leftmarginii - \advance\labelwidth-\labelsep - %\topsep 5\p@ plus2.5\p@ minus\p@ - \topsep 2\p@ plus.5\p@ minus\p@ - \parsep 2.5\p@ plus\p@ minus\p@ - \itemsep \parsep} -\def\@listiii{% - \leftmargin\leftmarginiii - \labelwidth\leftmarginiii - \advance\labelwidth-\labelsep - %\topsep 2.5\p@ plus\p@ minus\p@ - \topsep 1\p@ plus.2\p@ minus.2\p@ - \parsep \z@ - \partopsep \p@ plus\z@ minus\p@ - \itemsep \topsep} - -\skip\footins 20pt plus 4pt minus 2pt - -%%%%%%%%%%%%%%%%%%%% Special hacks for User's Guides %%%%%%%%%%%%%%%%%%%% - -%% Listing questions -\newcounter{faq}[section] -\def\thefaq{\arabic{faq}} -\let\l@faq\@gobbletwo -\def\faq{\@startsection{faq}{2}{\z@}% - {3.25ex plus 1ex minus .2ex}{1.5ex plus .2ex}{\faqfont}} -\def\faqfont{\normalsize\sffamily} -\def\faqmark#1{} - -%% Listing errors -\def\error{\vskip 2ex\noindent} - -%%%%%%%%%%%%%%%%%%%% Sections %%%%%%%%%%%%%%%%%%%% - -% Section headings use customizable fonts, leave less space above -% and below, and may overhang on left. - -\def\section{\@startsection{section}{1}{\sechang}% - {-3ex plus -1ex minus -.2ex}{1.5ex plus .2ex}{\secfont}} -\def\subsection{\@startsection{subsection}{2}{\subsechang}% - {-2.75ex plus -1ex minus -.2ex}{1.25ex plus .2ex}{\subsecfont}} -\newdimen\sechang -\newdimen\subsechang -\sechang=-.75in -\subsechang=-.375in -\def\secfont{\sffamily\LARGE\bfseries} % Section headings -\def\subsecfont{\sffamily\Large\bfseries} % Subsection headings - -%%%%%%%%%%%%%%%%%%%% Page style %%%%%%%%%%%%%%%%%%%% - -%% Headings: -\def\ps@docheadings{% - \let\@mkboth\markboth - \def\@oddhead{}% - \let\@evenhead\@oddhead% - \def\@oddfoot{% - \small\sffamily - \rightmark - \hfil - \thepage}% - \def\@evenfoot{% - \small\sffamily - \thepage - \hfil - \theheadertitle}% - \def\sectionmark##1{\markright {##1}}}% -\pagestyle{docheadings} - -%%%%%%%%%%%%%%%%%%%% Table of contents %%%%%%%%%%%%%%%%%%%% - -%% Tight up spacing in TOC: -\newskip\tempskip -\def\TOCshrink{.5} -\def\TableOfContents{% - \begin{quote} - \begin{center} \Large\bf Contents \end{center} - \def\numberline##1{\hbox to 0pt{\hss##1\hskip 1em}}% - \let\oldaddvspace\addvspace - \def\addvspace##1{% - \tempskip##1\relax - \oldaddvspace{\TOCshrink\tempskip}} - \@starttoc{toc}% - \end{quote}} -\def\tableofcontents{% - \clearpage - \markright{Table of contents}% - \TableOfContents - \clearpage} - - -%%%%%%%%%%%%%%%%%%%% Dates %%%%%%%%%%%%%%%%%%%% - -%% This expands the date, as defined in \filedate. - -\def\expanddate#1/#2/#3/{% - \number#3{} - \month=#2 - \ifcase\month\or - January \or February \or March \or April \or May \or June \or - July \or August \or September \or October \or November \or December - \fi - 20#1} -\def\thefiledate{\expandafter\expanddate\Date/} -\date{\thefiledate} - -%%%%%%%%%%%%%%%%%%%% Codes and examples %%%%%%%%%%%%%%%%%%%% - -%% This is an environment for putting samples of code. It is like -%% a variant of \begin{quote}\ttfamily ... \end{quote}. It is NOT verbatim. - -\def\NotNested{\def\begin##1{% - \@latexerr{Bad nesting of environments. - Perhaps missing \end{\@currenvir}}\@eha - \end{\@currenvir}% - \begin{##1}}} -\def\Ex{% - \NotNested - \list{}{}\item[]% - \if@minipage\else\vskip\parskip\fi - \leftskip\@totalleftmargin - \rightskip\z@ - \parindent\z@ - \parskip\z@ - \parfillskip\@flushglue - \hfuzz 1pt - \@@par - \global\@inlabelfalse} -\def\endEx{\endlist} - -%% Various things to make it easier to write code and examples: -\begingroup - \catcode`\{=12 \catcode`\}=12 - \catcode`\(=1 \catcode`\)=2 - \catcode`\+=0 \catcode`\\=12 - +gdef+|(\) % \| = character \ - +gdef+{({) % \{ = character { - +gdef+}(}) % \} = character } -+endgroup -\def\Backslash{\protect\|} - -%%%%%%%%%%%%%%%%%%%% Fonts %%%%%%%%%%%%%%%%%%%% - -% Use scaled versions of the ps fonts. - -\def\times@scale{.96} -\def\helv@scale{.82} -\def\courier@scale{.985} - -%DG \DeclareFontFamily{T1}{times}{} -%DG \def\1{\DeclareFontShape{T1}{times}} -%DG \1{m}{n}{<->s*[\times@scale]ptmrq}{}% -%DG \1{m}{it}{<->s*[\times@scale]ptmriq}{}% -%DG \1{m}{sc}{<->s*[\times@scale]ptmrcq}{}% -%DG \1{b}{n}{<->s*[\times@scale]ptmbq}{}% -%DG \1{b}{it}{<->s*[\times@scale]ptmbiq}{}% -%DG \1{m}{sl}{<->ssub * times/m/it}{}% -%DG \1{b}{sc}{<->sub * times/m/sc}{}% -%DG \1{b}{sl}{<->ssub * times/b/it}{}% -%DG \1{bx}{n}{<->ssub * times/b/n}{}% -%DG \1{bx}{it}{<->ssub * times/b/it}{}% -%DG \1{bx}{sc}{<->sub * times/m/sc}{}% -%DG \1{bx}{sl}{<->ssub * times/b/it}{}% - -%DG \DeclareFontFamily{OT1}{times}{}% -%DG \def\1{\DeclareFontShape{OT1}{times}} -%DG \1{m}{n}{<->s*[\times@scale]ptmr}{}% -%DG \1{m}{it}{<->s*[\times@scale]ptmri}{}% -%DG \1{m}{sc}{<->s*[\times@scale]ptmrc}{}% -%DG \1{b}{n}{<->s*[\times@scale]ptmb}{}% -%DG \1{b}{it}{<->s*[\times@scale]ptmbi}{}% -%DG \1{m}{sl}{<->ssub * times/m/it}{}% -%DG \1{b}{sc}{<->sub * times/m/sc}{}% -%DG \1{b}{sl}{<->ssub * times/b/it}{}% -%DG \1{bx}{n}{<->ssub * times/b/n}{}% -%DG \1{bx}{it}{<->ssub * times/b/it}{}% -%DG \1{bx}{sc}{<->sub * times/m/sc}{}% -%DG \1{bx}{sl}{<->ssub * times/b/it}{}% - -%DG \DeclareFontFamily{T1}{helvetica}{} -%DG \def\1{\DeclareFontShape{T1}{helvetica}} -%DG \1{m}{n}{<->s*[\helv@scale]phvrq}{}% -%DG \1{m}{it}{<->s*[\helv@scale]phvroq}{}% -%DG \1{m}{sc}{<->s*[\helv@scale]phvrcq}{}% -%DG \1{b}{n}{<->s*[\helv@scale]phvbq}{}% -%DG \1{b}{it}{<->s*[\helv@scale]phvboq}{}% -%DG \1{m}{sl}{<->ssub * helvetica/m/it}{}% -%DG \1{b}{sc}{<->sub * helvetica/m/sc}{}% -%DG \1{b}{sl}{<->ssub * helvetica/b/it}{}% -%DG \1{bx}{n}{<->ssub * helvetica/b/n}{}% -%DG \1{bx}{it}{<->ssub * helvetica/b/it}{}% -%DG \1{bx}{sc}{<->sub * helvetica/m/sc}{}% -%DG \1{bx}{sl}{<->ssub * helvetica/b/it}{}% - -%DG \DeclareFontFamily{OT1}{helvetica}{}% -%DG \def\1{\DeclareFontShape{OT1}{helvetica}} -%DG \1{m}{n}{<->s*[\helv@scale]phvr}{}% -%DG \1{m}{it}{<->s*[\helv@scale]phvro}{}% -%DG \1{m}{sc}{<->s*[\helv@scale]phvrc}{}% -%DG \1{b}{n}{<->s*[\helv@scale]phvb}{}% -%DG \1{b}{it}{<->s*[\helv@scale]phvbo}{}% -%DG \1{m}{sl}{<->ssub * helvetica/m/it}{}% -%DG \1{b}{sc}{<->sub * helvetica/m/sc}{}% -%DG \1{b}{sl}{<->ssub * helvetica/b/it}{}% -%DG \1{bx}{n}{<->ssub * helvetica/b/n}{}% -%DG \1{bx}{it}{<->ssub * helvetica/b/it}{}% -%DG \1{bx}{sc}{<->sub * helvetica/m/sc}{}% -%DG \1{bx}{sl}{<->ssub * helvetica/b/it}{}% - -%DG \DeclareFontFamily{T1}{r-helvetica}{} -%DG \def\1{\DeclareFontShape{T1}{r-helvetica}} -%DG \1{m}{n}{<->s*[\helv@scale]rphvrq}{}% -%DG \1{m}{it}{<->s*[\helv@scale]rphvroq}{}% -%DG \1{m}{sc}{<->s*[\helv@scale]rphvrcq}{}% -%DG \1{b}{n}{<->s*[\helv@scale]rphvbq}{}% -%DG \1{b}{it}{<->s*[\helv@scale]rphvboq}{}% -%DG \1{m}{sl}{<->ssub * helvetica/m/it}{}% -%DG \1{b}{sc}{<->sub * helvetica/m/sc}{}% -%DG \1{b}{sl}{<->ssub * helvetica/b/it}{}% -%DG \1{bx}{n}{<->ssub * helvetica/b/n}{}% -%DG \1{bx}{it}{<->ssub * helvetica/b/it}{}% -%DG \1{bx}{sc}{<->sub * helvetica/m/sc}{}% -%DG \1{bx}{sl}{<->ssub * helvetica/b/it}{}% - -%DG \DeclareFontFamily{OT1}{r-helvetica}{}% -%DG \def\1{\DeclareFontShape{OT1}{r-helvetica}} -%DG \1{m}{n}{<->s*[\helv@scale]rphvr}{}% -%DG \1{m}{it}{<->s*[\helv@scale]rphvro}{}% -%DG \1{m}{sc}{<->s*[\helv@scale]rphvrc}{}% -%DG \1{b}{n}{<->s*[\helv@scale]rphvb}{}% -%DG \1{b}{it}{<->s*[\helv@scale]rphvbo}{}% -%DG \1{m}{sl}{<->ssub * helvetica/m/it}{}% -%DG \1{b}{sc}{<->sub * helvetica/m/sc}{}% -%DG \1{b}{sl}{<->ssub * helvetica/b/it}{}% -%DG \1{bx}{n}{<->ssub * helvetica/b/n}{}% -%DG \1{bx}{it}{<->ssub * helvetica/b/it}{}% -%DG \1{bx}{sc}{<->sub * helvetica/m/sc}{}% -%DG \1{bx}{sl}{<->ssub * helvetica/b/it}{}% - -%DG \DeclareFontFamily{OT1}{symbol}{} -%DG \DeclareFontShape{OT1}{symbol}{m}{n}{<->s*[\times@scale]rpsyr}{} - -%DG \let\saved@fontwarning\font@warning -%DG \let\font@warning\@gobble -%DG \DeclareSymbolFont{operators}{OT1}{times} {m}{n} -%DG \DeclareSymbolFont{letters} {OT1}{times} {m}{it} - -%DG \SetSymbolFont{operators}{bold}{OT1}{times} {b}{n} -%DG \SetSymbolFont{letters} {bold}{OT1}{times} {b}{it} - -%DG \renewcommand{\default@family}{times}% -%DG \renewcommand{\rmdefault}{times}% -%DG \renewcommand{\sfdefault}{helvetica}% -%DG \renewcommand{\ttdefault}{r-helvetica}% -%DG \fontfamily\default@family\selectfont - -%DG \@namedef{FV@fontfamily@helvetica}{% -%DG \def\FV@FontScanPrep{}% -%DG \def\FV@FontFamily{\fontfamily{r-helvetica}}} - -% A few tricks to avoid math fonts: - -\def\AmS{AMS} - -%RN \def\symchar#1{% -%RN \mbox{% -%RN \kern .3pt -%RN \fontfamily{symbol}\fontseries{m}\fontshape{n}\selectfont -%RN \char#1 -%RN \kern .3pt}} - -\def\symchar#1{% - \mbox{% - \kern .3pt - \Pisymbol{psy}{#1} - \kern .3pt}} - -\def\lt{\symchar{'074}} -\def\gt{\symchar{'076}} -\def\leq{\symchar{'243}} -\def\geq{\symchar{'263}} -\def\bullet{\symchar{'267}} -\def\ldots{\symchar{'274}} -\mathcode`\-="20B1 - -\renewcommand{\ttdefault}{\sfdefault} - -% The font commands: -\def\MainFont{\ttfamily\bfseries\large} % For macro definitions. -\def\UsageFont{\ttfamily\bfseries} % For in-line macro names. -\def\InlineFont{\ttfamily} % For other in-line snipets of code. -\def\MetaFont{\sffamily\slshape} % For meta arguments. -%\def\OpArgFont{\fontseries{m}\selectfont} % For optional arguments. -\def\OpArgFont{\normalfont} % For optional arguments. - -\begingroup - \catcode`\<=\active - \gdef\ShortMeta{% - \catcode`\<=\active - \def<##1>{{\MetaFont ##1\/}}} -\endgroup - -\def\DeleteShortMeta{\catcode`\<=12\relax} - -% <foo> is short for {\MetaFont foo}. -% Works with \Verb command and LVerb* environment, -% but is disabled in LVerb environment. -\ShortMeta - -% Short-cuts for coordinates: -\def\x#1{{\MetaFont x#1\/}} -\def\y#1{{\MetaFont y#1\/}} -\def\c#1{{\InlineFont(\x{#1},\kern 1pt\y{#1})}} -\def\cn{\c{n}} - -%%%%%%%%%%%%%%%%%%%% Verbatim %%%%%%%%%%%%%%%%%%%% - -% `fancyvrb' modifications to suppress the management of the < and > -% characters, to allow to use them to change the font. - -% So, we suppress the codes in `fancyvrb' to disable ligatures management. -% (D.G. - 02/28/03) -\def\FV@SetupFont{% - \FV@BaseLineStretch - \FV@FontSize - \FV@FontFamily - \FV@FontSeries - \FV@FontShape - \selectfont -% D.G. modification begin - Feb. 28, 2003 -% \@noligs} -} -% D.G. modification end - -% D.G. modification begin - Feb. 28, 2003 -%\def\FV@GetLine{\@noligs\expandafter\FV@CheckScan\FancyVerbGetLine} -\def\FV@GetLine{\expandafter\FV@CheckScan\FancyVerbGetLine} -% D.G. modification end - -\AtBeginDocument{\DefineShortVerb{\"}} - -\VerbatimFootnotes - -\fvset{gobble=2,commentchar=\",codes={\catcode`\<=12},fontfamily=helvetica, - frame=single,numbers=left,numbersep=1mm} - -\DefineVerbatimEnvironment{LVerb}{LVerbatim}{fontsize=\small} -\DefineVerbatimEnvironment{LVerb*}{LVerbatim}% - {fontsize=\small,codes={\catcode`\<=13}} - -\def\FV@Space{\ \ } - -% Verbatim items: - -\newcommand{\vitem}{\SaveVerb[codes={\catcode`\<=13}, - aftersave={\item[\UseVerb{item}]}]{item}} - -%%%%%%%%%%%%%%%%%%%% Example environments %%%%%%%%%%%%%%%%%%%% - -% The Example environment uses the fancybox.sty macros -% 1. Save example verbatim to \jobname.tmp, -% 2. Input verbatim with \catcode`\"=14 (" is a comment). -% 3. Input again with \catcode\`"=9 (" is ignored). - -% There are 5 example environments: -% 1. example : center output -% 2. example* : process output with no special formatting. -% 3. example** : Place on left side of verbatim input. -% 4. MEx : Like example**, but contents put in picture environment. -% 5. MEx* : Like MEx, but with grid. -\newcommand{\BeginExample}{% - \VerbatimEnvironment - \catcode`\<=12\relax - \catcode`\"=9\relax - \begin{VerbatimOut}[commentchar=none,codes={\catcode`\"=12}]{\jobname.tmp}} - -\newcommand{\EndExample}{% - \end{VerbatimOut} - \fvset{gobble=0,fontsize=\small}} - -\newenvironment{example}{\BeginExample}{% - \EndExample - \LVerbatimInput{\jobname.tmp}% - \begin{center}\leavevmode\input{\jobname.tmp}\end{center}} - -\newenvironment{example*}{\BeginExample}{% - \EndExample\LVerbatimInput{\jobname.tmp}\input{\jobname.tmp}} - -\newenvironment{example**}{\BeginExample}{% - \EndExample\SideBySideEx{\input{\jobname.tmp}}} - -\newif\ifgrid -\newpsobject{usergrid}{psgrid}{subgriddiv=1,griddots=10,gridlabels=7pt} - -\def\MEx{\@ifnextchar[{\@MEx}{\@MEx[0,0]}} -\def\@MEx[#1,#2](#3,#4){% - \def\PictureSize{(#1,#2)(#3,#4)}% - \BeginExample} -\def\endMEx{% - \EndExample - \SideBySideEx{% - \expandafter\pspicture\PictureSize - \ifgrid\usergrid\fi\relax - \input{\jobname.tmp}% - \endpspicture}} - -\def\SideBySideEx#1{% - \trivlist\item[]% - \leavevmode\kern-\@totalleftmargin - \hbox{\valign{% - \vfil##\vfil\cr - \hbox to \z@{\hss#1}\cr - \hbox to \leftmargini{\hss}\cr - \@tempdimc=\textwidth - \advance\@tempdimc-\leftmargini - \advance\@tempdimc-\psframesep - \advance\@tempdimc-\psframesep - \advance\@tempdimc-\pslinewidth - \advance\@tempdimc-\pslinewidth - \hbox{\psframebox{\BVerbatimInput[frame=none,numbersep=2mm, - boxwidth=\@tempdimc]{\jobname.tmp}}}\cr}}% - \endtrivlist} - -\@namedef{MEx*}{\gridtrue\MEx} -\@namedef{endMEx*}{\endMEx} - -% `fancyvrb' modificatons to be able to handle number lines -% with the \BVerbatim environment and the \BVerbatimInput macro -% (DG - 11/04/98) - -% D.G. modification begin - Nov. 4, 1998 -%\def\FV@BProcessLine#1{\hbox{\FancyVerbFormatLine{#1}}} -\def\FV@BProcessLine#1{% -\hbox\ifx\FV@boxwidth\relax\else to\FV@boxwidth\fi{% -\FV@LeftListNumber -\FV@LeftListFrame -\FancyVerbFormatLine{#1}\hss -\FV@RightListFrame -\FV@RightListNumber}} -% D.G. modification end - -% To be able to handle number lines with \BUseVerbatim macro -% D.G. modification begin - Nov. 4, 1998 -%\def\BUseVerbatim{\FV@Command{}{BUseVerbatim}} -\def\BUseVerbatim{\FV@Command{}{BNumbersUseVerbatim}} - -\def\FVC@BNumbersUseVerbatim#1{\FV@CheckIfSaved{#1}{\FV@BNumbersUseVerbatim}} - -\def\FV@BNumbersUseVerbatim#1{\FV@BNumbersVerbatimBegin#1\FV@BVerbatimEnd} - -\def\FV@BNumbersVerbatimBegin{% - \begingroup - \FV@UseKeyValues - \FV@BeginVBox - \let\FV@ProcessLine\FV@BNumbersProcessLine - \FV@FormattingPrep - \FV@ObeyTabsInit}% - -\def\FV@BNumbersProcessLine#1{% -\global\advance\FV@CodeLineNo\@ne -\FV@StepLineNo -\FV@BProcessLine{#1}} -% D.G. modification end - -%%%%%%%%%%%%%%%%%%%% Logos %%%%%%%%%%%%%%%%%%%% - -\def\b@LaTeX{% - \begingroup - \csname reset@font\endcsname - \rmfamily\bfseries - L\kern-.32em - \raise.36ex\hbox{% - \ifx\@currsize\Huge\LARGE\else - \ifx\@currsize\huge\Large\else - \ifx\@currsize\LARGE\large\else - \ifx\@currsize\Large\normalsize\else - \ifx\@currsize\large\small\else - \ifx\@currsize\normalsize\footnotesize\else - \ifx\@currsize\small\scriptsize\else - \ifx\@currsize\footnotesize\scriptscriptsize - \fi\fi\fi\fi\fi\fi\fi\fi - \textbf{A}}% - \kern-.15em - T\kern-.1667em - \lower.7ex\hbox{E}\kern-.125em - X% - \endgroup} -\def\bLaTeX{\b@LaTeX} - -%DG \@ifundefined{AmSTeX} -%DG {\def\AmSTeX{\leavevmode\hbox{$\cal A\kern-.2em\lower.376ex% -%DG \hbox{$\cal M$}\kern-.2em\cal S$-\TeX}}}{} -\@ifundefined{BibTeX} - {\def\BibTeX{{\rmfamily B\kern-.05em{\sc i\kern-.025em b}\kern-.08em% - T\kern-.1667em\lower.7ex\hbox{E}\kern-.125emX}}}{} -\@ifundefined{ConTeXt} - {\def\ConTeXt{{\rmfamily Con\TeX t}}}{} -%DG \@ifundefined{SliTeX} -%DG {\def\SliTeX{{\rmfamily S\kern-.06emL\kern-.18em\raise.32ex\hbox -%DG \textsc{i}\kern -.03em\TeX}}}{} -\@ifundefined{PlainTeX}{\def\PlainTeX{\textsc{Plain}\kern2pt\TeX}}{} - -%%%%%%%%%%%%%%%%%%%% Quick reference %%%%%%%%%%%%%%%%%%%% - -%% The macro definitions are stored in in the command sequence -%% \quickref as they appear in the text. This is much easier -%% than trying to output the stuff to an auxiliary file and having -%% to worry about catcodes. - -% An entry in \quickref is of the form: \qentry{type}{entry} -\def\quickref{} -\long\def\addtoquickref#1#2{% - \expandafter\gdef\expandafter\quickref\expandafter{% - \quickref\qentry{#1}{#2}}} -\def\qentry#1{\@nameuse{qr@#1}} - -\long\def\addtoquickref#1#2{} - -\def\MakeQuickRef{% - \long\def\addtoquickref##1##2{% - \wlog{}% - \toks@{\qentry{##1}{##2}}% - \message{\the\toks@}% - \wlog{}% - \let\MakeQuickRef\relax}} - -%% For switching into landscape mode for the Quick Reference: -\let\NormalShipout\shipout -\newbox\OutputBox -\def\LandscapeMode{% - \long\def\shipout##1##2{% - \setbox\OutputBox=\hbox{\rput[tl]{90}{\vbox{##2}}}% - \NormalShipout\box\OutputBox}% - \voffset 9in} - -% This makes the Quick Reference: -\def\QuickReference{% - \begin{Landscape}{\paperwidth}{\paperheight}{\rotateleft} - \oddsidemargin 0pt - \evensidemargin 0pt - \topmargin -.5in - \textheight 6.5in - \textwidth 9in - \columnsep 60pt - \footskip 0pt - \footheight 0pt - \headheight 15pt - \headsep 40pt - \parskip 4pt plus 1pt minus 1pt - \UsePageParameters - \twocolumn - \def\label##1{} - \subsechang=-.25in - \pagenumbering{Roman} - \pagestyle{quickref} - \MacroDefCodes - \let\Main\string - \let\MainFont\UsageFont - \MainFont - \quickref - \end{Landscape}} -\let\QuickReference\relax - -\def\ps@quickref{% - \def\@oddhead{% - \large\bfseries\sffamily - \hbox to .5\textwidth{PSTricks v\Version\hfill}% - \hbox to \z@{\hss Quick Reference\hss}% - \hbox to .5\textwidth{\hfill\thepage}} - \let\@evenhead\@oddhead - \def\@oddfoot{}\def\@evenfoot{}} - -% For page numbering in the QR: -\setbox\pst@boxg=\hbox{\UsageFont 99} -\newdimen\refnumdim -\refnumdim=\wd\pst@boxg -\def\refnum#1{\hbox to \refnumdim{\hss\rmfamily\bfseries\pageref{#1}}} - -% Section commands that add an entry to the QR: -\def\Section#1{\addtoquickref{section}{#1}\@checksec\section{#1}} -\def\Subsection#1{\addtoquickref{section}{#1}\subsection{#1}} - -% This is just an error checker: -\def\@checksec{% - \def\@tempa{document}% - \ifx\@tempa\@currenvir\else - \@latexerr{\string\Section\space occurred inside - \@currenvir\space environment}\@ehc - \expandafter\end\expandafter{\@currenvir}% - \expandafter\@checksec - \fi} - -% The qr@ definitions: -\def\qr@@object#1{\mbox{\begingroup\escapechar`\+% - \refnum{\string#1}\endgroup\hskip 1em\string#1}} -\def\qr@object#1{\qr@@object#1\par} -\def\qr@@param#1=#2\@nil{\refnum{\string#1}} -\def\qr@param#1{\leavevmode\hbox to\hsize{\qr@@param#1\@nil\hskip 1em#1}\par} -\def\qr@section#1{\subsection*{#1}} -\long\def\qr@center#1{\begin{center}#1\end{center}} - -%%%%%%%%%%%%%%%%%%%% Parts %%%%%%%%%%%%%%%%%%%% - -\font\bighelv=phvb at 88bp - -% Macro names changed for compatibility with `hyperref' (D.G. - 02/28/03) -\def\part{\clearpage\leavevmode\@ifstar{\part@ii}{\part@i}} -\def\part@i#1{% - \refstepcounter{part}% - \addcontentsline{toc}{part}{\protect\pnumberline{\thepart}#1}% - \lower 20pt\hbox to \z@{\hss{\bighelv\Roman{part}}\hskip 2em}% - \part@iii{#1}} -\def\part@ii#1{\addcontentsline{toc}{part}{#1}\part@iii{#1}} -\def\part@iii#1{% -\markright{#1}{\sffamily\Huge\bfseries#1}\par\vskip 2cm\@afterheading} -\def\thepart{\Roman{part}} -% Problem with `hyperref' (D.G. - 02/28/03) -%\def\pnumberline#1{\hbox to2cm{Part #1\hfill}} -\def\pnumberline#1{Part #1\hspace{1cm}} - -\def\l@part#1#2{% - \addpenalty{\@secpenalty}% - \addvspace{\lpartskip}% - \begingroup - \@tempdima 1em - \parindent \z@ \rightskip \@pnumwidth - \parfillskip -\@pnumwidth - {\large\bfseries\leavevmode#1\hfil \hbox to\@pnumwidth{\hss #2}}\par - \nobreak - \endgroup} -\newskip\lpartskip -\lpartskip 1.25em plus 1pt minus 1pt - -%%%%%%%%%%%%%%%%%%%% Parameter definitions and indexing %%%%%%%%%%%%%%%%%%%% - -% Like \MainEnvIndex, etc., but for parameters: -\def\MainParIndex{\SpecialIndex{parameter}{main}} -\def\UsageParIndex{\SpecialIndex{parameter}{usage}} - -% Like \MainPar, but for parameters. Can optionally include =foo. -\def\MainPar#1{\@MainPar#1==\@nil} -\def\@MainPar#1=#2=#3\@nil{% - \MainParIndex{#1}% - \label{#1}% - {\MainFont #1\ifx#3=\relax=\MetaFont#2\fi}} - -% Analogous to \n, but optionally argument can include =foo. -\def\p#1{\@p#1==\@nil} -\def\@p#1=#2=#3\@nil{% - \UsageParIndex{#1}% - {\UsageFont #1\ifx#3=\relax=#2\fi}} - -% For listing parameter definitions in a {description} environment: -\def\pitem[#1]{\@ifnextchar({\@pitem#1}{\@@pitem#1\@nil}} -\def\@pitem#1=#2(#3){% - \item[\MainFont#1=\MetaFont#2]% % Set the definition in \MainFont - \MainParIndex{#1}% - \label{#1}% - \addtoquickref{param}{#1={\MetaFont #2}\hfill {\rmfamily Default:} #3}% - \hfill {\MainFont {\rmfamily Default:} #3}\par} -\def\@@pitem#1=#2\@nil{% - \@ifundefined{default@#1}% - {\@warning{Parameter `#1' default not defined.}\@eha\@pitem#1=#2()} - {\@pitem#1=#2(\csname default@#1\endcsname)}} - -% Read in a list of defaults extracted from pstricks.doc: -\begingroup - \catcode`\@=12 - \catcode`\{=12 - \catcode`\}=12 - \catcode`\&=1 - \catcode`\^=2 - \def\psset@&% - \begingroup - \catcode`\\=12 - \pssetxx^ - \def\pssetxx#1{#2}&% - \expandafter\gdef\csname default@#1\endcsname^% - \endgroup^ - \csname @input\endcsname&defaults.pst^ -\endgroup - -% For putting parameter definitions in an Ex environment: -\def\Par#1{\@ifnextchar({\@Par#1}{\@@Par#1\@nil}} -\def\@Par#1=#2(#3){% - \leavevmode - \MainParIndex{#1}% - \label{#1}% - \addtoquickref{param}{#1={\MetaFont #2}\hfill {\rmfamily Default:} #3}% - \hbox to\linewidth{% - \MainFont #1={\MetaFont#2}\hfill {\rmfamily Default:} #3}\par} -\def\@@Par#1=#2\@nil{% - \@ifundefined{default@#1}% - {\@warning{Parameter `#1' default not defined.}\@Par#1=#2()} - {\@Par#1=#2(\csname default@#1\endcsname)}} - - -%%%%%%%%%%%%%%%%%%%% Macro definitions and indexing %%%%%%%%%%%%%%%%%%%% - -% There are four commands for listing macro definitions: -% 1. \mitem : List in a description environment -% 2. \oitem : Like \mitem, but optional *[par] automatically inserted. -% 3. \object : List in a description environment. -% 4. \Mac : Short for \begin{Ex}\object foo\end{Ex}. -% -% In each case: -% 1. definition is delimited only by end-of-line. -% 2. {}, () and [] are literal, with contents set in \MetaFont -% 3. = and , are literal. -% 4. `foo' is for optional arguments. -% 5. <foo> is meta, as usual. - -\begingroup - \catcode`\(=13 - \catcode`\,=13 - \catcode`\==13 - \gdef\MacroDefCodes{% - \@MD - \catcode`\(13 - \catcode`\^^M12 - \catcode`\`13 - \catcode`\,13 - \catcode`\!1 - \catcode`\@2 - \def~{}% - \def={{\fontshape{n}\selectfont\string=}}% - \def,{{\fontshape{n}\selectfont\string,}}% - \def(##1){\string({\MetaFont ##1})}} -\endgroup - -\begingroup - \catcode`\`=13 \gdef`#1'{{\OpArgFont #1}} -\endgroup - -\begingroup - \catcode`\^^M=12\relax% - \gdef\GetMacroDef#1{\begingroup\MacroDefCodes\@GetMacroDef{#1}}% - \gdef\@GetMacroDef#1#2^^M{#1{#2}\endgroup}% -\endgroup - -% For listing macro definitions in a "description" environment: -\def\mitem{\GetMacroDef\@mitem} -\def\@mitem#1{% - \item[{\MainFont\Main#1}]% - \addtoquickref{object}{#1}% - \leavevmode\par} - -% For listing graphics object definitions in a {description} environment: -% The optional *[par] is inserted automatically. -\def\oitem{\GetMacroDef\@oitem} -\def\@oitem#1{\@@oitem#1\@nil} -\def\@@oitem#1#2\@nil{\@mitem{#1{\OpArgFont*[{\MetaFont par}]}#2}} - -% For generic macro definition, usually to be put in a displayed env. -\def\object{\GetMacroDef\@object} -\def\@object#1{\addtoquickref{object}{#1}{\MainFont\Main#1\@@par}} - -% For a single displayed macro definition: -\def\Mac{\GetMacroDef\@Mac} -\def\@Mac#1{\begin{Ex}\@object{#1}\end{Ex}} - - -%% We must hack the generation of indexes modified by `hyperref' -%% to generate the \hyperpage macro by ourselves (D.G. - 02/28/03) -\def\@@wrindex#1|#2|#3\\{% - \ifx\\#2\\% - \protected@write\@indexfile{}{% -% D.G. modification begin - Feb. 28, 2003 -% \string\indexentry{#1|hyperpage}{\thepage}% - \string\indexentry{#1}{\thepage}% -% D.G. modification end - }% - \else - \def\Hy@temp@A{#2}% - \ifcase0\ifx\Hy@temp@A\HyInd@ParenLeft 1\fi - \ifx\Hy@temp@A\HyInd@ParenRight 1\fi - \relax - \protected@write\@indexfile{}{% - \string\indexentry{#1|#2}{\thepage}% - }% - \else - \protected@write\@indexfile{}{% - \string\indexentry{#1|#2hyperpage}{\thepage}% - }% - \fi - \fi - \endgroup - \@esphack -} - -%%%%%%%%%%%%%%%%%%%% Indexes %%%%%%%%%%%%%%%%%%%% - -\def\PrintUserIndex{% - \clearpage - \columnsep=20pt - \advance\oddsidemargin\sechang - \advance\evensidemargin\sechang - \advance\textwidth-\sechang - \sechang=0pt - \onecolumn - \@input{\jobname.ind}} - -%%%%%%%%%%%%%%%%%%%% Special indexing for User's Guides %%%%%%%%%%%%%%%%%%%% - -\@ifundefined{actualchar}{\def\actualchar{@}}{} -\@ifundefined{quotechar}{\def\quotechar{"}}{} -\@ifundefined{levelchar}{\def\levelchar{!}}{} -\@ifundefined{encapchar}{\def\encapchar{|}}{} -\@ifundefined{verbatimchar}{\def\verbatimchar{+}}{} - -%% These are the indexing commands: - -%% Commands: \MainIndex \UsageIndex -%% Environments: \MainEnvIndex \UsageEnvIndex -%% Style options: \MainOptionIndex \UsageOptionIndex -%% Counters: \MainCntIndex \UsageCntIndex - -\def\@Index#1{\@bsphack\index{#1}\@esphack} -\def\Index#1#2{% - \@bsphack - \index{\expandafter\@gobble\string#2\actualchar\string - \verb\quotechar*\verbatimchar\string#2\verbatimchar - \encapchar #1}} -{\catcode`\!=0 !catcode`!\=12!gdef!special@gobble#1{!if\#1!else#1!fi}} -\def\MainIndex{\Index{main}} -\def\UsageIndex{\Index{usage}} -\def\SpecialIndex#1#2#3{% - \@Index{#3\actualchar{\ttfamily #3} (#1)\encapchar #2}% - \@Index{#1s:\levelchar{\ttfamily #3}\encapchar #2}} -\def\MainEnvIndex{\SpecialIndex{environment}{main}} -\def\UsageEnvIndex{\SpecialIndex{environment}{usage}} -\def\MainOptionIndex{\SpecialIndex{option}{main}} -\def\UsageOptionIndex{\SpecialIndex{option}{usage}} -\def\MainCntIndex{\SpecialIndex{counter}{main}} -\def\UsageCntIndex{\SpecialIndex{counter}{usage}} - -%% Font for index page numbers: -%% We add hyperlinks (D.G. - 02/28/03) -\def\main#1{\textbf{\hyperpage{#1}}} -\def\usage#1{\hyperpage{#1}} - -%% These combine various functions: - -%% Commands: \Main \Usage -%% Environments: \MainEnv \UsageEnv -%% Style options: \MainOption \UsageOption -%% Counters: \MainCnt \UsageCnt - -%% The "Main" ones -%% * Index argument. -%% * Print argument with \MainFont -%% * Create label +foo, e+foo or o+foo. - -%% The "Usage" ones -%% * Index argument. -%% * Print argument with \UsageFont. - -\def\SpecialLabel#1#2+{\label{+#2}} -\def\LabelIndex#1{\MainIndex{#1}\expandafter\SpecialLabel\string#1+} -\def\Main#1{% - \MainIndex{#1}% - \expandafter\SpecialLabel\string#1+% - {\MainFont\string#1}} -\def\Usage#1{\UsageIndex{#1}{\UsageFont\string#1}} -\def\MainEnv#1{% - \MainEnvIndex{#1}% - \label{e+#1}% - {\MainFont #1}} -\def\UsageEnv#1{\UsageEnvIndex{#1}{\UsageFont #1}} -\def\MainOption#1{% - \MainOptionIndex{#1}% - \label{o+#1}% - {\MainFont #1}} -\def\UsageOption#1{\UsageOptionIndex{#1}{\UsageFont #1}} -\def\MainCnt#1{% - \MainCntIndex{#1}% - \label{c+#1}% - {\MainFont #1}} -\def\UsageCnt#1{\UsageCntIndex{#1}{\UsageFont #1}} - -%% These are abbreviations. -\def\N{\Main} -\def\n{\Usage} -\def\E{\MainEnv} -\def\e{\UsageEnv} -\def\O{\MainOption} -\def\o{\UsageOption} -\def\C{\MainCnt} -% D.G. modification begin - Mar. 4, 2003 -% The \c macro was already defined for coordinates -%\def\c{\UsageCnt} -% D.G. modification end - -%% User's guide and documented code have different index prologue. -\def\PrintUserIndex{{\let\ps@plain\@empty\@input{\jobname.ind}}} - -%% This is for listing commands in a description environment. -\def\xitem#1{\item[\Main{#1}]} - -\begingroup - \catcode`\<=1 \catcode`\>=2 - \catcode`\{=13 \catcode`\}=12 - \catcode`\[=13 - \gdef\@MD<% - \catcode`\{=13 \catcode`\}=12 \catcode`\[=13 - \def{##1}<\{<\MetaFont ##1\/>\}>% - \def[##1]<\string[<\MetaFont ##1\/>]>> -\endgroup -\def\MD{% - \NotNested - \Ex - \begingroup - \@MD - \def\end{\par\endgroup\end}% - \def\\{\@centercr\Main}% - \MainFont - \Main} -\def\endMD{\endEx} - -%%%%%%%%%%%%%%%%%%%% Framed warnings %%%%%%%%%%%%%%%%%%%% - -\newbox\bombbox -\setbox\bombbox=\hbox to\z@{% - \hss - \rput[r](-1.5cm,0){% - \psset{unit=7pt} - \begin{pspicture}(-4,-4)(4,4) - \pscircle[fillcolor=gray,fillstyle=solid]{4} - \rput{45}{\psscaleboxto(6,0){PS\kern-1pt}} - \psellipse*(0,3.8)(1,.2) - \psellipse*(0,5.5)(1,.2) - \psframe*(-1,3.8)(1,5.5) - \psbezier(0,5.5)(0,7)(1,8)(3.5,8) - \multido{\r=-0+40}{9}{\rput{\r}(3.5,8){\psline(0,0)(.4,0)}} - \end{pspicture}}} - -\def\Warning{% - \trivlist\item[] - \leavevmode\kern\@totalleftmargin - \valign\bgroup% - \vfil##\vfil\cr - \copy\bombbox\cr - \minipage{\textwidth} - \quote - \emph{Warning:}\hskip 1em - \ignorespaces} -\def\endWarning{\endquote\endminipage\cr\egroup\endtrivlist} - -\newbox\filebox -\setbox\filebox=\hbox{% - \pspicture(-1,-.5)(1,.7) - \pspolygon[linearc=2pt,shadow=true,shadowangle=45,xunit=1.1]% - (-1,-.55)(-1,.5)(-.8,.5)(-.8,.65)(-.2,.65)(-.2,.5)(1,.5)(1,-.55) - \endpspicture} -\def\File#1{% - \leavevmode - \marginpar{% - \leavevmode\lower 20pt\hbox{% - \hbox to0pt{\hbox to \linewidth{\hss\copy\filebox\hss}\hss}% - \raise 10pt\hbox to \linewidth{\hss\large\bfseries\sffamily #1\hss}}}% - \ignorespaces} - - -%%%%%%%%%%%%%%%%%%%% Miscellaneous %%%%%%%%%%%%%%%%%%%% - -% Driver notes: -\def\drivers{\noindent\small Driver notes:\hskip 1em\ignorespaces} - -\endinput - -%% END pst-user.cls diff --git a/Master/texmf-dist/doc/generic/pstricks/pst-user.ist b/Master/texmf-dist/doc/generic/pstricks/pst-user.ist deleted file mode 100644 index a00718a2e08..00000000000 --- a/Master/texmf-dist/doc/generic/pstricks/pst-user.ist +++ /dev/null @@ -1,7 +0,0 @@ -% headings_flag 1 -% heading_prefix "{\\Large\\textbf{Letter}" -% heading_suffix "}" - -delim_0 " \\dotfill \ " -delim_1 " \\dotfill \ " -delim_2 " \\dotfill \ " diff --git a/Master/texmf-dist/doc/generic/pstricks/pst-user.tex b/Master/texmf-dist/doc/generic/pstricks/pst-user.tex deleted file mode 100644 index 08ef5b2bc5b..00000000000 --- a/Master/texmf-dist/doc/generic/pstricks/pst-user.tex +++ /dev/null @@ -1,87 +0,0 @@ -%% BEGIN pst-user.tex -%% -%% LaTeX file pst-user.tex. Source for the PSTricks User's Guide. -%% -%% COPYRIGHT 1993-2003, by Timothy Van Zandt, tvz@econ.insead.fr -%% COPYRIGHT 2008, by Herbert Voss, voss@pstricks.de -%% -%% This program can be redistributed and/or modified under the terms -%% of the Artistic License. -%% A copy of that license is included in the file artistic.txt. -%% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% -%% Under normal circumstances, you do not need to LaTeX this file because -%% the User's Guide is distributed with the PSTricks package, already -%% typeset and converted to PDF in the file pst-user.pdf. -%% -%% If you do need/want to run it again, here is what to do: -%% -%% * You must have installed the PSTricks package. -%% -%% * You must have the LaTeX packages `fancybox', `fancyvrb', `geometry', -%% `hyperref' and the file "pst-user.cls" which is the document class -%% to format this documentation. -%% -%% * An index, pst-user.ind, is also distributed with PSTricks. You -%% can use makeindex, without any special styles, to remake the index. -%% -%% * Style options: -%% a4paper : For A4 paper. -%% twoside : For two-sided printing. -%% 2up : For two-up printing. -%% makeindex : Create a new idx file for making an index. -%% (it is not necessary to remake the index, -%% if you make no other changes.) -%% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -\listfiles - -%\documentclass[a4paper]{pst-user} -%\documentclass[11pt,makeindex]{pst-user} -\documentclass[11pt]{pst-user} - -\def\Date{07/12/10} -\def\Version{1.5} - -\includeonly{% - psd-cove,% - psd-esse,% - psd-basi,% - psd-para,% - psd-cust,% - psd-pict,% - psd-text,% - psd-node,% - psd-tree,% - psd-fill,% - psd-3d,% - psd-spec,% - psd-help% -} - -\makeindex % Comment it to do regenerate the index - -\begin{document} - -\include{psd-cove} % Cover page; Table of Contents -\include{psd-esse} % Welcome to PSTricks; The essentials -\include{psd-basi} % Basic graphics objects -\include{psd-para} % More graphics parameters -\include{psd-cust} % Custom graphics -\include{psd-pict} % Picture tools -\include{psd-text} % Text tricks -\include{psd-node} % Nodes and node connections -\include{psd-tree} % Trees -\include{psd-fill} % Filling and tilings -\include{psd-3d} % 3d graphics -\include{psd-spec} % Special Tricks -\include{psd-help} % Help (appendix) - -\PrintUserIndex % Comment out to suppress index -\QuickReference % Comment out to suppress quick reference - -\end{document} - -%% END pst-user.tex |