aboutsummaryrefslogtreecommitdiff
path: root/latex_pgfornament/texmf/tex/latex/pgfornament/tikzrput.sty
blob: c2f7c8fdd5fcb441f9b7b4e690398bec2efd817a (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
99
100
101
102
103
104
105
106
107
108
% utf8
% tikzrput.sty 0.2 du 05/03/2012 inspired from rput (pstricks)
% ------------------------------------------------
%  Créé par Alain Matthes le 2012-02-22.
%  Copyright (c) 2012 __AlterMundus__.
%
% This file may be distributed and/or modified
%
% 1. under the LaTeX Project Public License , either version 1.3
% of this license or (at your option) any later version and/or
% 2. under the GNU Public License. 
% ------------------------------------------------
% Options are the same of /rput in pstricks
%
\NeedsTeXFormat{LaTeX2e}% 
\RequirePackage{tikz,ifpdf}%
\ProvidesPackage{tikzrput}[2012/03/02 v0.2 rput for tikz]%
\edef\tikzrputPtVirCode{\the\catcode`\;} 
\edef\tikzrputAtCode{\the\catcode`\@} 
\edef\tikzrputTwoPtCode{\the\catcode`\:}  
\catcode`\;=12\relax
\catcode`\:=12\relax
\catcode`\@=11\relax

\newif\ifrput@polar\rput@polarfalse
\def\rput@empty{}

\def\rput@parsecoordinate#1{%
\rput@getseparator#1,\@nil
\ifrput@polar 
   \rput@getfrompolar#1\@nil 
\fi
}%
\def\rput@getseparator#1,#2\@nil{%
\ifx\rput@empty#2\rput@empty%
   \rput@polartrue
\else
   \rput@polarfalse
\fi
}%
\def\rput@getfrompolar#1;#2\@nil{%
  \def\pos@rput{#1:#2}%
}%

\def\rput@pos@   {\def\rput@anchor{center}}
\def\rput@pos@B  {\def\rput@anchor{base}} 
\def\rput@pos@Br {\def\rput@anchor{base east}} 
\def\rput@pos@Bl {\def\rput@anchor{base west}} 
\def\rput@pos@tr {\def\rput@anchor{north east}} 
\def\rput@pos@tl {\def\rput@anchor{north west}}
\def\rput@pos@br {\def\rput@anchor{south east}} 
\def\rput@pos@bl {\def\rput@anchor{south west}}
\def\rput@pos@t  {\def\rput@anchor{north}}
\def\rput@pos@b  {\def\rput@anchor{south}}
\def\rput@pos@r  {\def\rput@anchor{east}}
\def\rput@pos@l  {\def\rput@anchor{west}}
\let\rput@pos@rB\rput@pos@Br
\let\rput@pos@lB\rput@pos@Bl
\let\rput@pos@rt\rput@pos@tr
\let\rput@pos@lt\rput@pos@tl
\let\rput@pos@rb\rput@pos@br
\let\rput@pos@lb\rput@pos@bl
\newbox\mybox      
\ifpdf 
\pgfutil@ifundefined{rput}%
  {%
  \tikzset{rput style/.style={}} 
  \def\rput{\pgfutil@ifnextchar[{\rput@i}{\global\edef\opt@rput{}\rput@ii}}%
  \def\rput@i[#1]{\global\edef\opt@rput{#1}\rput@ii}%
  \def\rput@ii{\pgfutil@ifnextchar({\def\angle@rput{0}\rput@iv}{\rput@iii}}%
  \def\rput@iii#1{%
   \ifx\rput@empty#1\rput@empty\def\angle@rput{0}\else\def\angle@rput{#1}\fi%
   \pgfutil@ifnextchar({\rput@iv}{\rput@iv(0,0)}}%,
  \def\rput@iv(#1){\def\pos@rput{#1}%
                   \rput@parsecoordinate{#1}%
                   \rput@v}%
  \def\rput@v#1{% 
  \sbox\mybox{\pgfinterruptpicture#1\endpgfinterruptpicture}%   
               \begingroup 
               \tikzifinpicture{%
               \let\begin@my@tikz@env\scope
               \let\end@my@tikz@env\endscope 
               }{%
               \let\begin@my@tikz@env\tikzpicture
               \let\end@my@tikz@env\endtikzpicture
               }%     
                  \@nameuse{rput@pos@\opt@rput}%
                  \begin{pgfinterruptboundingbox}%
                    \begin@my@tikz@env[overlay] 
                       \path (0,0)--(\pos@rput);
                       \protected@edef\rput@temp{%
                                                 \noexpand\node[inner sep = 0pt,
                                                                anchor    = \rput@anchor,
                                                                rotate    = \angle@rput,
                                                                rput style]%
                                  }\rput@temp     at (\pos@rput)   {\box\mybox};%{#1};%
                     \end@my@tikz@env 
                 \end{pgfinterruptboundingbox}%
               \endgroup
               \ignorespaces
               }%
  }{%
     }%
\fi 
\catcode`\;=\tikzrputPtVirCode\relax
\catcode`\@=\tikzrputAtCode\relax  
\catcode`\:=\tikzrputTwoPtCode\relax   
\endinput