summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/generic/pstricks/pst-text.tex
blob: b0a7b5c5afe98d1b69e46a2e3fb3e7612cda55b1 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
%% BEGIN pst-text.tex
%%
%% Placing text on a path with PSTricks 97.
%% See the PSTricks User's Guide for description.
%% See tp-test.tex for sample input and tp-test.ps for sample output.
%% This uses the header file `pst-text.pro'.
%%
\def\fileversion{97}
\def\filedate{1997/03/25}
%%
%% COPYRIGHT 1993, 1994, 1999 by Timothy Van Zandt, tvz@nwu.edu.
%%
%% 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.
%%
\message{ v\fileversion, \filedate}

\csname PSTextPathLoaded\endcsname
\let\PSTextPathLoaded\endinput

\ifx\PSTricksLoaded\endinput\else
  \def\next{\input pstricks.tex}\expandafter\next
\fi

\edef\TheAtCode{\the\catcode`\@}
\catcode`\@=11

\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}

\catcode`\@=\TheAtCode\relax

\endinput
%%
%% END pst-text.tex