diff options
-rwxr-xr-x | Build/tools/tpm-ctan-check | 3 | ||||
-rw-r--r-- | Master/texmf-dist/doc/generic/pst-text/Changes | 14 | ||||
-rw-r--r-- | Master/texmf-dist/doc/generic/pst-text/README | 12 | ||||
-rw-r--r-- | Master/texmf-dist/doc/generic/pst-text/pst-text-doc.bib | 78 | ||||
-rw-r--r-- | Master/texmf-dist/doc/generic/pst-text/pst-text-doc.pdf | bin | 0 -> 172169 bytes | |||
-rw-r--r-- | Master/texmf-dist/doc/generic/pst-text/pst-text-doc.tex | 508 | ||||
-rw-r--r-- | Master/texmf-dist/dvips/pst-text/pst-text.pro | 110 | ||||
-rw-r--r-- | Master/texmf-dist/source/generic/pst-text/Makefile | 49 | ||||
-rw-r--r-- | Master/texmf-dist/tex/generic/pst-text/pst-text.tex | 156 | ||||
-rw-r--r-- | Master/texmf-dist/tex/latex/pst-text/pst-text.sty | 7 | ||||
-rw-r--r-- | Master/texmf-dist/tpm/pst-text.tpm | 4 |
11 files changed, 938 insertions, 3 deletions
diff --git a/Build/tools/tpm-ctan-check b/Build/tools/tpm-ctan-check index afe3981cfdf..e061bdc619e 100755 --- a/Build/tools/tpm-ctan-check +++ b/Build/tools/tpm-ctan-check @@ -74,7 +74,8 @@ my @WorkingTPM = qw( poemscol polynom polytable powerdot ppr-prv pracjourn preprint prettyref preview probsoln procIAGssymp program protocol pseudocode psfrag psnfss pspicture pst-3d pst-3dplot pst-bar - pst-barcode pst-blur pst-eucl pst-fr3d pst-func pst-grad pst-labo + pst-barcode pst-blur pst-eps pst-eucl pst-fill pst-fr3d pst-func + pst-grad pst-labo pst-lens pst-math pst-optic pst-osci pst-pdf pst-pdgr pst-slpe pst-uml pstricks pstricks-add qcm qtree diff --git a/Master/texmf-dist/doc/generic/pst-text/Changes b/Master/texmf-dist/doc/generic/pst-text/Changes new file mode 100644 index 00000000000..876042d4703 --- /dev/null +++ b/Master/texmf-dist/doc/generic/pst-text/Changes @@ -0,0 +1,14 @@ +pst-text.sty -------- +2006-01-01 + +pst-text.tex -------- +1.00 2006-11-06 - integrate the pst-char stuff, which is + now obsolete. (hv) + + +pst-text.pro -------- +1.00 2006-11-06 - add a patch for japanese text (hv) + - first CTAN contrib version (hv) + + +pst-text-doc.tex -------- diff --git a/Master/texmf-dist/doc/generic/pst-text/README b/Master/texmf-dist/doc/generic/pst-text/README new file mode 100644 index 00000000000..0be87e6a80e --- /dev/null +++ b/Master/texmf-dist/doc/generic/pst-text/README @@ -0,0 +1,12 @@ +pst-text: text along a different path and char manipulations + +pst-text.sty - The LaTeX file +pst-text.tex - The TeX file +pst-text.pro - The dvips header file +pst-text-doc.pdf - The documentation +pst-text-doc.tex - The documentation, source +pst-text-doc.bib - The documentation, bibfile + + +-- +Herbert Voss 2006-11-05 diff --git a/Master/texmf-dist/doc/generic/pst-text/pst-text-doc.bib b/Master/texmf-dist/doc/generic/pst-text/pst-text-doc.bib new file mode 100644 index 00000000000..04745cd2ae2 --- /dev/null +++ b/Master/texmf-dist/doc/generic/pst-text/pst-text-doc.bib @@ -0,0 +1,78 @@ +%% -*-bibtex-*- +@STRING{tugboat = {TUGboat} } +@STRING{dtk = {{D}ie {\TeX}nische {K}om{\"o}die} } + +@Book{companion, + author = {Michel Goosens and Frank Mittelbach and Alexander + Samarin}, + title = {The {\LaTeX} {G}raphics {C}ompanion}, + publisher = {{Addison-Wesley Publishing Company}}, + year = {1997}, + address = {Reading, Mass.} +} + +@Article{girou:01:, + author = {Denis Girou}, + title = {Pr\'esentation de {PST}ricks}, + journal = {Cahier {GUT}enberg}, + year = 1994, + volume = {16}, + month = apr, + pages = {21-70} +} + +@Article{girou:02:, + author = {{Timothy Van} Zandt and Denis Girou}, + title = {Inside {PST}ricks}, + journal = TUGboat, + year = 1994, + volume = {15}, + month = sep, + pages = {239-246} +} + +@Book{PostScript, + Author = {Kollock, Nikolai G.}, + Title = {Post{S}cript richtig eingesetzt: vom {K}onzept zum + praktischen {E}insatz}, + Publisher = {IWT}, + Address = {Vaterstetten}, + year = 1989, +} + +@Manual{pstricks, + Title = {PSTricks - {\PS} macros for generic {\TeX}}, + Author = {{Timothy Van} Zandt}, + Organization = {}, + Address = {\url{http://www.tug.org/application/PSTricks}}, + Note = {}, + year = 1993 +} + +@Manual{pst-coil, + Title = {\texttt{pst-coil}: Coils and zigzags}, + Author = {{Timothy Van} Zandt}, + Organization = {}, + Address = {\url{CTAN:graphics/pstricks/generic/}}, + Note = {}, + year = 1999 +} + +@Manual{multido, + Title = {\texttt{multido.tex} - a loop macro, that supports fixed-point addition}, + Author = {{Timothy Van} Zandt}, + Organization = {}, + Address = {\url{CTAN:/graphics/pstricks/generic/multido.tex}}, + Note = {}, + year = 1997 +} + +@Book{PSTricks2, + author = {Herbert Vo\ss{}}, + title = {\texttt{PSTricks} -- {G}rafik f\"ur \TeX{} und \LaTeX}, + edition = {third}, + publisher = {DANTE -- Lehmanns}, + year = {2006}, + address = {Heidelberg/Hamburg} +} + diff --git a/Master/texmf-dist/doc/generic/pst-text/pst-text-doc.pdf b/Master/texmf-dist/doc/generic/pst-text/pst-text-doc.pdf Binary files differnew file mode 100644 index 00000000000..fe6df784704 --- /dev/null +++ b/Master/texmf-dist/doc/generic/pst-text/pst-text-doc.pdf diff --git a/Master/texmf-dist/doc/generic/pst-text/pst-text-doc.tex b/Master/texmf-dist/doc/generic/pst-text/pst-text-doc.tex new file mode 100644 index 00000000000..8c068aba7b2 --- /dev/null +++ b/Master/texmf-dist/doc/generic/pst-text/pst-text-doc.tex @@ -0,0 +1,508 @@ +\documentclass[english]{article} +% +\usepackage[T1]{fontenc} +\usepackage[latin9]{inputenc} +\listfiles +\usepackage[scaled]{luximono} +\usepackage{lmodern} +\usepackage{xspace} +\usepackage[bottom]{footmisc} +\usepackage{tabularx} +\usepackage{longtable,setspace} +\usepackage[NewCommands,NewParameters]{ragged2e} +\usepackage[dvipsnames]{pstricks} +\usepackage{pst-plot} +\usepackage{pst-text,pst-grad} +% +\def\PST{{\texttt{PSTricks}}\xspace} +\def\PDF{{\texttt{PDF}}\xspace} +\def\pst{{\texttt{pstricks}}\xspace} +\def\PS{PostScript\xspace} +\newcommand*\CMD[1]{{\UrlFont\texttt{\textbackslash #1}}} +% +\def\tIndex#1{\index{#1@{\UrlFont\texttt{#1}}}} +\def\cIndex#1{\index{#1@\CMD{#1}}} +\def\pIndex#1{\index{Parameter@\textbf{Parameter}!{\UrlFont\texttt{#1}}}} +\def\ppIndex#1{\index{Parameter@\textbf{Parameter}!{#1}}} +\def\sIndex#1{\index{Syntax@\textbf{Syntax}!\CMD{#1}}} +\def\csIndex#1{\sIndex{#1}\cIndex{#1}} +\def\PIndex#1{\index{Paket@\textbf{Paket}!\texttt{#1}}} +\def\mIndex#1{\texttt{#1}\tIndex{#1}\pIndex{#1}} +% +\pretolerance=500 +\tolerance=1000 +\hbadness=3000 +\vbadness=3000 +\hyphenpenalty=400 + +\usepackage{showexpl}% not a real PSTricks package +\usepackage{babel} +\usepackage{makeidx} +\makeindex +\usepackage[dvips,colorlinks,linktocpage]{hyperref} % PDF-support +% +\renewcommand{\ttdefault}{ul9}% Luxi Mono +\lstset{keywordstyle=\small\fontfamily{ul9}\bfseries} +\lstset{language=PSTricks,moredelim=**[is][\bf\color{blue}]{§}{§}}% oder andere Begrenzer +% + +\begin{document} +% +\title{\texttt{pst-text}: Manipulate text and characters} +\author{Herbert Voß\thanks{Thanks to Lars Kotthoff and Geoff Mercer for translating this documentation!}} +\maketitle + +\begin{abstract} +\PS principally does not know lines in the proper meaning of the word, but only +paths\index{path} and those can have any arbitrary form. Along such paths +arbitrary text may be arranged. The package +\verb+pst-text+\tIndex{pst-text} supports the setting of text along a path +and other character manipulations, where several characters +naturally result in a text again of course. + +It should be noted that the correct result is not guaranteed with every \verb+DVI-PS+\tIndex{DVI-PS} driver. +This package was written for Rokicki's\index{Rokicki} +\verb+dvips+\tIndex{dvips} programme, which is practically part of every \TeX{} +distribution. +\end{abstract} + +\tableofcontents + +\clearpage + +% --------------------------------------------------------------------------------------- +\section{Text manipulations}\label{sec:psttext:Textmanipulationen} +% --------------------------------------------------------------------------------------- +The package \verb+pst-text+ principally defines only one macro. +\begin{verbatim} +\pstextpath[<position>](<x,y>){<graphic object>}{<text>} +\end{verbatim} + +\begin{description} +\item[<position>] specifies the alignment of the text referring to the path. +\begin{description} +\item[\texttt{l}] text starts at the beginning of the path (default). +\item[\texttt{c}] text is aligned symmetrically to the middle of the path. +\item[\texttt{r}] text ends at the end of the path. +\end{description} +As a basic principle it is to be kept in mind that when the text is longer +than the path this option has no effect since the path is filled with text +and any overflowing text disappears. +\item[<x,y>] is an offset\index{offset} and denotes the values by which the + particular characters shall be translated in $x$ and $y$ direction + relative to the path. + \verb+(<x,y>)+ have to be cartesian coordinates as the support for special + coordinates allowed by \PST is not + possible here. The dimensions of $x$ and $y$ refer to the current scale. The default is + \verb+(0,\TPoffset)+,\cIndex{TPoffset} where \verb+TPoffset+ is set to a + length of \verb+-0.7ex+. +\item[<graphic object>] any arbitrary object which creates a path. +\item[<text>] the text to set, which may only consist of alphanumeric + characters. No macros are possible within the text, + but the text may be put into a \verb+\parbox+. +\end{description} + +\PS does not reserve any space for the output, so that the current text +is overwritten if corresponding white space has not been provided by \TeX. +This can be achieved with a vertical feed (\verb+\vspace+\cIndex{vspace}) or +with a \verb+pspicture+ environment\tIndex{pspicture}. + +\begin{minipage}{4.5cm} +\begin{pspicture}(-2,-2.5)(2,2.5) +\psset{linewidth=0.2pt} +\pstextpath[c](0,0){\pscircle{2}}% + {\Large Now just text is written in a circle.} +\end{pspicture} +\end{minipage}\hfill% +\begin{minipage}{\linewidth-4.5cm-1em} +\begin{lstlisting} +\begin{pspicture}(-2,-2.5)(2,2.5) +\psset{linewidth=0.2pt} +\pstextpath[c](0,0){\pscircle{2}}% + {\Large Now just text is written in a circle.} +\end{pspicture} +\end{lstlisting} +\end{minipage} + +This first example shows the relatively easy use of the macro. If the path +is not required to be drawn the line style\index{line style} can be set to \verb+none+. +The following example shows the use of the offset option. It is clear that +every single character is translated, because the beginning and the end of the +text stayed the same. Since the text was written in a circle, a positive +specification for \verb+TPoffset+ causes a translation towards the centre of the circle. + +\medskip\noindent +\begin{LTXexample}[width=4.5cm] +\begin{pspicture}(-2,-2.5)(2,2.5) +\psset{linewidth=0.2pt} +\pstextpath[c](0,2ex){\pscircle{2}}% + {\Large Now just text is written in a circle.} +\end{pspicture} +\end{LTXexample} + +% The following example was first published in \cite{girou:01} and represents +% the original form of the poem ``La colombe poignard� et le jet d'au'' by +% Guillaume Appolinaire. + +% --------------------------------------------------------------------------------------- +\medskip +\subsection{Examples} +% --------------------------------------------------------------------------------------- +With \verb+\pscustom+ one is offered unlimited +possibilities for paths. The following example uses the circle again, but +forms an eight, which is composed of four circle parts to get a continuous path. In +the second example a square has been appended to a circle. The starting point of the +path is always the circle at $0$, here marked by $\Rightarrow$. + + +\medskip\noindent +\begin{LTXexample}[width=4cm] +\psset{unit=0.75,linestyle=none} +\begin{pspicture}(-2,-4)(2,4) +\pstextpath[l](0,0){% + \pscustom{ + \psarcn(0,2){2}{0}{-90} + \psarc(0,-2){2}{90}{0} + \psarc(0,-2){2}{0}{90} + \psarcn(0,2){2}{-90}{0} + }% +}{\large $\Rightarrow$Now we are writing some nonsense text which appears in + a large eight in the correct direction.} +\end{pspicture} +\end{LTXexample} + +\medskip\noindent +It can be easily seen that in the above example the upper circle is larger than +the lower. This is because the text is always written on the path, which faces +towards the inner on the upper circle and towards the outer on the lower circle (or square) +due to the +change in direction. + + +\medskip\noindent +\begin{LTXexample}[width=4cm] +\begin{pspicture}(-2,-3.25)(2,3.25) +\psset{linestyle=none} +\pstextpath[l](0,0){% + \pscustom[unit=0.75]{ + \psarcn(0,2){2}{0}{-90} + \pspolygon(0,0)(-1.7,0)(-1.7,-3.4)(1.7,-3.4)(1.7,0)(0,0) + \psarcn(0,2){2}{-90}{0} + }% +}{\large $\Rightarrow$Jetzt wollen wir + einfach mal einen Text in einer + ziemlich gro�n ACHT schreiben, + aber richtig rum.} +\end{pspicture} +\end{LTXexample} + +\medskip\noindent +The setting of the text along a path is very memory and calculation intensive on the +\PS side, so that with longer texts some seconds may pass until the desired +result appears even on faster computers. This is shown in the following example, +where the text is the beginning of the song ``Into the shining sun''{} by Pink +Floyd. Note how the text is truncated as the path is too short to fit the entire text in. + +\medskip\noindent +\begin{center} +\begin{pspicture}(-3,-3)(3,3) +\psset{linestyle=none} +\pstextpath[l](0,0){% + \parametricplot[plotstyle=curve,% + plotpoints=500]{0}{3000}{% + /r {t 1000 div} def t sin r mul t cos r mul } +}{ +Where were you when I was burned and broken - +While the days slipped by from my window watching - +Where were you when I was hurt and I was helpless - +Because the things you say and the things you do surround me - +While you were hanging yourself on someones else's words - +Dying to believe in what you heard - +I was staring straight into the shining sun - + +Lost in thought and lost in time - +While the seeds of life and the seeds of change were planted +Outside the rain fell dark and slow +While I pondered on this dangerous but irresistible pastime +} +\end{pspicture} +\end{center} + +\begin{lstlisting} +%\usepackage{pst-plot} + +\begin{pspicture}(-3,-3)(3,3) +\psset{linestyle=none} +\pstextpath[l](0,0){% + \parametricplot[plotstyle=curve,% + plotpoints=500]{0}{3000}{% + /r {t 1000 div} def t sin r mul t cos r mul } +}{ +Where were you when I was burned and broken - +While the days slipped by from my window watching - +Where were you when I was hurt and I was helpless - +Because the things you say and the things you do surround me - +While you were hanging yourself on someones else's words - +Dying to believe in what you heard - +I was staring straight into the shining sun - + +Lost in thought and lost in time - +While the seeds of life and the seeds of change were planted +Outside the rain fell dark and slow +While I pondered on this dangerous but irresistible pastime +} +\end{pspicture} +\end{lstlisting} + + +\section{Character manipulations}\label{sec:psttext:Zeichenmanipulationen} +% --------------------------------------------------------------------------------------- +With character manipulations the same issue with the \verb+DVI-PS+ driver applies, namely that the results are only guaranteed for Rokicki's\index{Rokicki} +\verb+dvips+\tIndex{dvips} programme.\index{outline font} + +% --------------------------------------------------------------------------------------- +\subsection{\CMD{pscharpath}}\label{sec:psttext:pscharpath} +% --------------------------------------------------------------------------------------- +\csIndex{pscharpath}Although this macro has a name similar to +\verb+\pstextpath+, it has a completely different meaning. +% +\begin{verbatim} +\pscharpath[<parameters>]{<text>} +\pscharpath*[<parameters>]{<text>} +\end{verbatim} + +\begin{description} +\item[<parameters>] All \PST parameters, insofar as they make sense, may be + specified here. +\item[<text>] The text to set, which may only consist of alphanumeric + characters, therefore no macros are possible within the text. +\end{description} + +Normally, one will define ones own font size, which is best done with +\verb+\DeclareFixedFont+\cIndex{DeclareFixedFont}, since this macro is very +fast because it simply sets the size without having to look up any font tables. + +\medskip\noindent +\begin{LTXexample}[width=6.5cm] +\DeclareFixedFont{\RM}{T1}{ptm}{b}{n}{2cm} +\pscharpath{\RM TeXnik}\\ +\pscharpath[linecolor=lightgray]{\RM TeXnik}\\ +\psset{fillstyle=gradient,gradbegin=red,gradend=cyan} +\pscharpath[gradangle=90]{\RM TeXnik}\\ +\pscharpath[linestyle=none,gradangle=-90]{\RM TeXnik} +\end{LTXexample} + +\medskip\noindent +Normally the path, here the outer line of the characters, is deleted after the +macro \verb+\pscharpath+ has ended. With the asterisk version it is preserved +and can be used for other ``baubles''{}, for instance for \verb+\pstextpath+, +where the saved path can be used as input for the text to set. + + +\medskip\noindent +\DeclareFixedFont{\SF}{T1}{phv}{b}{n}{2.45cm} +\begin{center} +\pstextpath(0,-1ex){\pscharpath*[linestyle=none]{\SF Pink Floyd}}{ +\scriptsize Where were you when I was burned and broken - +While the days slipped by from my window watching - +Where were you when I was hurt and I was helpless - +Because the things you say and the things you do surround me - +While you were hanging yourself on someones else's words - +Dying to believe in what you heard - +I was staring straight into the shining sun - + +Lost in thought and lost in time - +While the seeds of life and the seeds of change were planted +Outside the rain fell dark and slow +While I pondered on this dangerous but irresistible pastime +} +\end{center} + +\begin{lstlisting} +\DeclareFixedFont{\SF}{T1}{phv}{b}{n}{2.5cm} +\pstextpath(0,-1ex){% + \pscharpath*[linestyle=none]{\SF Pink Floyd}}{ + \scriptsize < ... Text ... > + } +\end{lstlisting} + +% --------------------------------------------------------------------------------------- +\subsection{\CMD{pscharclip}}\label{sec:psttext:pscharclip} +% --------------------------------------------------------------------------------------- +\csIndex{pscharclip}\verb+\pscharclip+ is practically identical to +\verb+\pscharpath+ with the only difference being that it sets the clipping +path\index{clipping path} to the current path. +% +\begin{verbatim} +\pscharclip[<parameters>]{<text>} % TeX example + ... +\endpscharclip +\pscharclip*[<parameters>]{<text>}% TeX example + ... +\endpscharclip +\begin{pscharclip}[<parameters>]{<text>} % LaTeX example + ... +\end{pscharclip} +\begin{pscharclip*}[<parameters>]{<text>}% LaTeX example + ... +\end{pscharclip} +\end{verbatim} +% +Using this one can ``write''{} \emph{within} a font, whereas it is not really +easy to get the ``base''{} congruent. How to deal with this best shall is shown +in the following worked example. + +The base is best formed as a \verb+minipage+\tIndex{minipage}, +thus enabling it to be moved to arbitrary spots. To have clear coordinates on one hand +and only the interesting area shown on the other hand, one uses a +\verb+pspicture*+ environment\tIndex{pspicture*}. Let us presume that we use a +font size of $3$cm and want to use the width of the whole page. +% +\begin{verbatim} +\begin{pspicture*}(\linewidth,3cm) +... +\end{pspicture} +\end{verbatim} +% +The text can be set exactly into the centre with a \verb+\rput+ +instruction\cIndex{rput}. + +\DeclareFixedFont{\RM}{T1}{ptm}{b}{n}{3cm} +\begin{pspicture*}(\linewidth,3cm) + \psgrid% + \begin{pscharclip}[linewidth=0.1pt]{% + \rput(0.5\linewidth,1.5){\RM PSTricks}}% + \end{pscharclip} +\end{pspicture*} + +\begin{lstlisting} +\DeclareFixedFont{\RM}{T1}{ptm}{b}{n}{3cm} +\begin{pspicture*}(\linewidth,3cm) + \psgrid% + \begin{pscharclip}[linewidth=0.1pt]{% + \rput(0.5\linewidth,1.5){\RM PSTricks}}% + \end{pscharclip} +\end{pspicture*} +\end{lstlisting} + +\medskip +The text ``lying below''{} the font is put into a \verb+minipage+\tIndex{minipage} of the +width \verb+\linewidth+\cIndex{linewidth}. Since this text underlies the +clipping path, it does not matter how long it really is, the essential thing is that the +the whole area is covered. This is especially important when the text is further manipulated such as rotated. So one may view the following example with +\verb+\begin{minipage}{\linewidth}+. + +\medskip +\DeclareFixedFont{\Rm}{T1}{ptm}{m}{n}{2mm} +\begin{pspicture*}(\linewidth,3cm) + \psgrid% + \rput{60}(0.5\linewidth,1.5){% + \begin{minipage}{0.6\linewidth} + \setstretch{0.5} + \color{red} + \multido{\i=1+1}{500}{\Rm PSTricks } + \end{minipage}% + } +\end{pspicture*} + + +\begin{lstlisting} +\DeclareFixedFont{\Rm}{T1}{ptm}{m}{n}{2mm} +\begin{pspicture*}(\linewidth,3cm) + \psgrid% + \rput{60}(0.5\linewidth,1.5){% + \begin{minipage}{0.6\linewidth} + \setstretch{0.5} + \color{red} + \multido{\i=1+1}{500}{\Rm PSTricks } + \end{minipage}% + } +\end{pspicture*} +\end{lstlisting} + +\medskip +Both of these can be overlaid where, because of the clipping +path,\index{clipping path} only the inner of the large letters seems transparent. +In the second example the \verb+minipage+ has been additionally rotated, the +line colour was ignored and the line spacing within the \verb+minipage+ was +halved (package \verb+setspace+\tIndex{setspace}). + +\medskip +\begin{pspicture*}(\linewidth,3cm) + \begin{pscharclip}[linewidth=0.1pt]{% + \rput(0.5\linewidth,1.5){\RM PSTricks}}% + \rput{60}(0.5\linewidth,1.5){% + \begin{minipage}{0.6\linewidth} + \setstretch{0.5} + \color{red} + \multido{\i=1+1}{500}{\Rm PSTricks } + \end{minipage}% + } + \end{pscharclip} +\end{pspicture*} + +\begin{pspicture*}(\linewidth,3cm) + \begin{pscharclip}[linewidth=0.1pt,linestyle=none]{% + \rput(0.5\linewidth,1.5){\RM PSTricks}}% + \rput{-60}(0.5\linewidth,1.5){% + \begin{minipage}{0.6\linewidth} + \setstretch{0.5} + \multido{\i=1+1}{500}{\Rm PSTricks } + \end{minipage}% + } + \end{pscharclip} +\end{pspicture*} + + +\begin{lstlisting} +\DeclareFixedFont{\RM}{T1}{ptm}{b}{n}{3cm} +\DeclareFixedFont{\Rm}{T1}{ptm}{m}{n}{2mm} +\begin{pspicture*}(\linewidth,3cm) + \begin{pscharclip}[linewidth=0.1pt]{% + \rput(0.5\linewidth,1.5){\RM PSTricks}}% + \rput{60}(0.5\linewidth,1.5){% + \begin{minipage}{0.6\linewidth} + \setstretch{0.5} + \color{red} + \multido{\i=1+1}{500}{\Rm PSTricks } + \end{minipage}% + } + \end{pscharclip} +\end{pspicture*} + +\begin{pspicture*}(\linewidth,3cm) + \begin{pscharclip}[linewidth=0.1pt,linestyle=none]{% + \rput(0.5\linewidth,1.5){\RM PSTricks}}% + \rput{-60}(0.5\linewidth,1.5){% + \begin{minipage}{0.6\linewidth} + \setstretch{0.5} + \multido{\i=1+1}{500}{\Rm PSTricks } + \end{minipage}% + } + \end{pscharclip} +\end{pspicture*} +\end{lstlisting} + + +\medskip +Generally it is not of interest what one bases \verb+\pscharclip+ on. +Using things sucha as a graphic can lead to some interesting possibilities. +It should be kept in mind +that alternatively \verb+pscharpath+\cIndex{pscharpath} may be +used in conjunction with \verb+psboxfill+\cIndex{psboxfill}. + + + + + +\nocite{*} +\bgroup +\raggedright +\bibliographystyle{plain} +\bibliography{\jobname} +\egroup + +\printindex + + +\end{document} diff --git a/Master/texmf-dist/dvips/pst-text/pst-text.pro b/Master/texmf-dist/dvips/pst-text/pst-text.pro new file mode 100644 index 00000000000..99e705b2205 --- /dev/null +++ b/Master/texmf-dist/dvips/pst-text/pst-text.pro @@ -0,0 +1,110 @@ +%! +% PostScript header file pst-text.pro +% Version 1.0, 2005-11-29 (hv) +% For distribution, see pstricks.tex. + +/tx@TextPathDict 40 dict def +tx@TextPathDict begin + +% Syntax: <dist> PathPosition - +% Function: Searches for position of currentpath distance <dist> from +% beginning. Sets (X,Y)=position, and Angle=tangent. +/PathPosition +{ /targetdist exch def + /pathdist 0 def + /continue true def + /X { newx } def /Y { newy } def /Angle 0 def + gsave + flattenpath + { movetoproc } { linetoproc } { } { firstx firsty linetoproc } + /pathforall load stopped { pop pop pop pop /X 0 def /Y 0 def } if + grestore +} def + +/movetoproc { continue { @movetoproc } { pop pop } ifelse } def + +/@movetoproc +{ /newy exch def /newx exch def + /firstx newx def /firsty newy def +} def + +/linetoproc { continue { @linetoproc } { pop pop } ifelse } def + +/@linetoproc { + /oldx newx def /oldy newy def + /newy exch def /newx exch def + /dx newx oldx sub def + /dy newy oldy sub def + /dist dx dup mul dy dup mul add sqrt def + /pathdist pathdist dist add def + pathdist targetdist ge + { pathdist targetdist sub dist div dup + dy mul neg newy add /Y exch def + dx mul neg newx add /X exch def + /Angle dy dx atan def + /continue false def + } if +} def + +/TextPathShow { + /String exch def + /CharCount 0 def +% hv begin 2005-11-29 1.00 +% String length +% { String CharCount 1 getinterval ShowChar +% /CharCount CharCount 1 add def + /CharSize 1 def + currentfont /FontType get 0 eq + { currentfont /FMapType get dup 2 eq exch dup 5 eq exch 9 eq or or + { /CharSize 2 def} if + } if + String length CharSize idiv + { String CharCount CharSize getinterval ShowChar + /CharCount CharCount CharSize add def +% hv end 2005-11-29 1.00 + } repeat +} def + +% Syntax: <pathlength> <position> InitTextPath - +/InitTextPath +{ gsave + currentpoint /Y exch def /X exch def + exch X Hoffset sub sub mul + Voffset Hoffset sub add + neg X add /Hoffset exch def + /Voffset Y def + grestore +} def + +/Transform +{ PathPosition + dup + Angle cos mul Y add exch + Angle sin mul neg X add exch + translate + Angle rotate +} def + +/ShowChar { + /Char exch def + gsave + Char end stringwidth + tx@TextPathDict begin + 2 div /Sy exch def 2 div /Sx exch def + +%%% MV 10-09-99 00:36 + /sc?currentpoint where {pop sc?currentpoint} {currentpoint} ifelse +% currentpoint + + Voffset sub Sy add exch + Hoffset sub Sx add + Transform + Sx neg Sy neg moveto + Char end tx@TextPathSavedShow + tx@TextPathDict begin + grestore + Sx 2 mul Sy 2 mul rmoveto +} def +% +end +% END pst-text.pro diff --git a/Master/texmf-dist/source/generic/pst-text/Makefile b/Master/texmf-dist/source/generic/pst-text/Makefile new file mode 100644 index 00000000000..e9339b26ce4 --- /dev/null +++ b/Master/texmf-dist/source/generic/pst-text/Makefile @@ -0,0 +1,49 @@ + +# `Makefile' for `pst-text.pdf', hv, 2006/08/11 + +.SUFFIXES : .tex .ltx .dvi .ps .pdf .eps + +PACKAGE = pst-text + +MAIN = pst-text-doc + +LATEX = latex + +ARCHNAME = $(MAIN)-$(shell date +%y%m%d) + +ARCHFILES = $(PACKAGE).sty $(PACKAGE).tex $(PACKAGE).pro $(MAIN).tex README Changes Makefile + +all : doc +# clean +doc: $(MAIN).pdf + +$(MAIN).pdf : $(MAIN).ps + GS_OPTIONS=-dAutoRotatePages=/None ps2pdf $< + +$(MAIN).ps : $(MAIN).dvi + dvips $< + +$(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) $< + $(LATEX) $< + +clean : + $(RM) $(addprefix $(MAIN), .log .aux .glg .glo .gls .ilg .idx .ind .tmp .toc .out ) + $(RM) $(addprefix $(MAIN), .dvi .ps) + +veryclean : clean + $(RM) $(addprefix $(MAIN), .pdf .bbl .blg) + +arch : + zip $(ARCHNAME).zip $(ARCHFILES) + +# EOF diff --git a/Master/texmf-dist/tex/generic/pst-text/pst-text.tex b/Master/texmf-dist/tex/generic/pst-text/pst-text.tex new file mode 100644 index 00000000000..02de2985623 --- /dev/null +++ b/Master/texmf-dist/tex/generic/pst-text/pst-text.tex @@ -0,0 +1,156 @@ +%% BEGIN pst-text.tex +%% +%% Placing text on a path with PSTricks 97. +%% See the PSTricks User's Guide for description. +%% This uses the header file `pst-text.pro'. +%% +%% +%% COPYRIGHT 1993, 1994, 1999 by Timothy Van Zandt, tvz@nwu.edu. +%% 2006 Herbert Voss <hvoss@tug.org> +%% +%% This program can be redistributed and/or modified under the terms +%% of the LaTeX Project Public License Distributed from CTAN +%% archives in directory macros/latex/base/lppl.txt. +%% +% +\csname PSTextPathLoaded\endcsname +\let\PSTextPathLoaded\endinput +\ifx\PSTricksLoaded\endinput\else\input pstricks \fi +%\ifx\PSTXKeyLoaded\endinput\else\input pst-xkey \fi +% +\def\fileversion{1.00} +\def\filedate{2006/11/05} +\message{ v\fileversion, \filedate (tvz,hv)} + +\edef\TheAtCode{\the\catcode`\@} +\catcode`\@=11 + +%\pst@addfams{pst-text} +\pstheader{pst-text.pro} +% +\def\pstextpath{\@ifnextchar[{\pstextpath@}{\pstextpath@[l]}} +\def\pstextpath@[#1]{% + \@ifnextchar({\pstextpath@@[#1]}{\pstextpath@@[#1](0,\TPoffset)}} +\def\pstextpath@@[#1](#2)#3{\pst@makebox{\pstextpath@@@[#1](#2){#3}}} +\def\pstextpath@@@[#1](#2,#3)#4{% + \pst@killglue + \begingroup + \ifx c#1\relax + \def\pst@tempa{.5}% + \else + \ifx r#1\relax + \def\pst@tempa{1}% + \else + \def\pst@tempa{0}% + \fi + \fi + \def\use@pscode{% + \pst@Verb{% + /mtrxc CM def + \tx@STV + CP translate + newpath + \pst@code\space + mtrxc setmatrix + 0 setgray}% + \gdef\pst@code{}}% + \def\psclip#1{\pst@misplaced\psclip}% + \let\endpsclip\relax + \def\@multips(##1)(##2)##3##4{\pst@misplaced\multips}% + \def\nc@object##1##2##3##4{\pst@misplaced{node connection}}% + \def\PSTtoEPS@i##1##2{\pst@misplaced\PSTtoEPS}% + \pssetlength\pst@dima{#2}% + \pssetlength\pst@dimb{#3}% + \setbox\pst@hbox\hbox{% + \hbox to\z@{% + \kern -\wd\pst@hbox + % BoxWidth = CurrX - Hoffset. + \pstVerb{tx@TextPathDict begin + currentpoint pop /Hoffset exch def end}% + \kern\pst@dima + % XOffset = Voffset - Hoffset (extra horizontal skip) + \pstVerb{tx@TextPathDict begin + currentpoint pop /Voffset exch def end}% + \hss + \pstVerb{% + /tx@TextPathSavedShow /show load def + \pst@dict \tx@PathLength end + dup 0 gt + { tx@TextPathDict begin \pst@tempa\space InitTextPath end + /show { tx@TextPathDict begin TextPathShow end } def + } + { pop } + ifelse}}% + \raise\pst@dimb\box\pst@hbox + \pstVerb{% + currentpoint newpath moveto + /show /tx@TextPathSavedShow load def}}% + \wd\pst@hbox=\z@ \dp\pst@hbox=\z@ \ht\pst@hbox=\z@ + \leavevmode + \hbox{{#4}\box\pst@hbox}% + \endgroup\ignorespaces} +\def\TPoffset{-.7ex} +% +\def\tx@CharPathShow{% + /tx@CharPathSavedShow /show load def + /show { + % These 3 lines check whether charpath yields anything interesting. + dup gsave newpath 0 0 moveto + true charpath pathbbox grestore + 3 -1 roll eq 3 1 roll eq and + % If not, just use show. + { tx@CharPathSavedShow } + % Otherwise, use charpath. + { true charpath } + ifelse } + def } +% +\def\pscharpath{\def\pst@par{}\pst@object{pscharpath}} +\def\pscharpath@i{\pst@makebox\pscharpath@ii} +\def\pscharpath@ii{% + \leavevmode\hbox{% + \pstVerb{\tx@CharPathShow}% + \box\pst@hbox + \pstVerb{/show /tx@CharPathSavedShow load def}% +% DG/SR modification begin - Nov. 26, 1998 - Patch 2 +% \if@star is true but \solid@star must not be executed in \begin@ClosedObj ! +% \begin@ClosedObj + \let\solid@starOLD\solid@star + \let\solid@star\relax + \begin@ClosedObj + \let\solid@star\solid@starOLD +% DG/SR modification end + \def\pst@linetype{1}% + \psdashadjustfalse + \showpointsfalse + \let\pst@newpath\@empty + \def\use@pscode{% + \pst@Verb{% + gsave + \tx@STV + \pst@code + grestore +% DG/SR modification begin - Jul. 3, 1998 / Mar. 11, 1999 - Patches 1 and 3 +% \if@star\else CP newpath moveto \fi}}% + \if@star\else CP newpath moveto \fi}% + \gdef\pst@code{}}% +% DG/SR modification end + \end@ClosedObj}} +% +\def\pscharclip{\def\pst@par{}\pst@object{pscharclip}} +\def\pscharclip@i{\pst@makebox\pscharclip@ii} +\def\pscharclip@ii{% + \leavevmode + \begingroup + \begin@psclip + {\@startrue\pscharpath@ii}% + \pstVerb{clip \if@star\else currentpoint newpath moveto\fi}% + \def\endpscharclip{\end@psclip\endgroup}% + \ignorespaces} +\def\endpscharclip{\pst@misplaced\endpscharclip} +% +\catcode`\@=\TheAtCode\relax + +\endinput +%% +%% END pst-text.tex diff --git a/Master/texmf-dist/tex/latex/pst-text/pst-text.sty b/Master/texmf-dist/tex/latex/pst-text/pst-text.sty new file mode 100644 index 00000000000..fed1eb8c59d --- /dev/null +++ b/Master/texmf-dist/tex/latex/pst-text/pst-text.sty @@ -0,0 +1,7 @@ +\RequirePackage{pstricks} +\ProvidesPackage{pst-text}[2006/01/01 package wrapper for pst-text.tex (hv)] +\input{pst-text.tex} +\ProvidesFile{pst-text.tex} + [\filedate\space \fileversion\space `pst-text' (tvz)] +\IfFileExists{pst-text.pro}{\@addtofilelist{pst-text.pro}}{}% +\endinput diff --git a/Master/texmf-dist/tpm/pst-text.tpm b/Master/texmf-dist/tpm/pst-text.tpm index 795237a8e27..5f7eeb6e667 100644 --- a/Master/texmf-dist/tpm/pst-text.tpm +++ b/Master/texmf-dist/tpm/pst-text.tpm @@ -9,9 +9,9 @@ <TPM:Title>The pst-text package.</TPM:Title> <TPM:Description></TPM:Description> <TPM:Author></TPM:Author> - <TPM:Size>201106</TPM:Size> + <TPM:Size>202320</TPM:Size> <TPM:Build/> - <TPM:RunFiles size="8714"> + <TPM:RunFiles size="8745"> texmf-dist/dvips/pst-text/pst-text.pro texmf-dist/tex/generic/pst-text/pst-text.tex texmf-dist/tex/latex/pst-text/pst-text.sty |