summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/source/generic/pstricks/psd-text.tex
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/source/generic/pstricks/psd-text.tex')
-rw-r--r--Master/texmf-dist/source/generic/pstricks/psd-text.tex260
1 files changed, 260 insertions, 0 deletions
diff --git a/Master/texmf-dist/source/generic/pstricks/psd-text.tex b/Master/texmf-dist/source/generic/pstricks/psd-text.tex
new file mode 100644
index 00000000000..ebc44abd8d7
--- /dev/null
+++ b/Master/texmf-dist/source/generic/pstricks/psd-text.tex
@@ -0,0 +1,260 @@
+%% 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