???
[pst-anamorphosis.git] / doc / possible_extensions.tex
1 \listfiles
2 \documentclass[a4paper,fleqn]{article}
3 \usepackage[utf8]{inputenc}
4 \usepackage[T1]{fontenc}
5 \usepackage{amsmath,amssymb}
6 \usepackage[frenchb]{babel}
7 %\usepackage{mathptmx}
8 \usepackage[charter]{mathdesign}
9 \usepackage[margin=2.5cm]{geometry}
10 \usepackage{multicol}
11 \usepackage{listings}
12 \usepackage[svgnames]{xcolor}
13 \usepackage{showexpl}
14 \usepackage[nomessages]{fp}
15 \usepackage{xspace}
16 \usepackage{pst-plot,pst-solides3d,pst-anamorphosis-add,pst-3d}
17 \usepackage{pst-grad}
18 \usepackage[absolute,notitlepage]{pst-abspos}
19 \usepackage{url}
20
21 \psset{path=C:/Dokumente und Einstellungen/Besitzer/Desktop/bergen/bergen/}
22 %\def\epsRoot{C:/Dokumente und Einstellungen/Besitzer/Desktop/bergen/bergen/}
23
24 \renewcommand{\ttdefault}{lmtt}
25
26 \definecolor{syracuseGRIS}{HTML}{C1C1C1}
27 \definecolor{syracuseVERT}{HTML}{029235}
28
29 \definecolor{sepia}{rgb}{1,0.8,0.8}
30 \definecolor{grisclair}{rgb}{0.8,0.8,0.8}
31 \definecolor{BleuCiel}{cmyk}{0.2,0,0,0}
32 \definecolor{OrangePale}{cmyk}{0,0.2,0.4,0}
33
34 \lstset{%
35 language=[LaTeX]TeX,%
36 float=hbp,%
37 basicstyle=\ttfamily\small, %
38 texcsstyle=*\color{blue},%
39 identifierstyle=\color{black}, %
40 keywordstyle=\color{syracuseVERT}, %
41 otherkeywords={$, \{, \}, \[, \]},
42 stringstyle=\color{syracuseVERT}, %
43 commentstyle=\color{syracuseVERT}, %
44 backgroundcolor=\color{syracuseGRIS!30},%
45 columns=flexible, %
46 tabsize=4, %
47 frame=single, %
48 %frame=shadowbox, %
49 %rulesepcolor=\color{syracuseGRIS!30},%
50 extendedchars=true, %
51 showspaces=false, %
52 showstringspaces=false, %
53 numbers=left,
54 numbersep=0.8em,
55 numberstyle=\tiny, %
56 breaklines=true, %
57 breakautoindent=true,%
58 captionpos=b,%
59 xleftmargin=1em,%
60 sensitive=true,%
61 morekeywords=[6]{pspicture,center},%
62 keywordstyle=[6]\color{FireBrick},%
63 %morekeywords=[7]{(,)},%
64 %keywordstyle=[7]\color{syracuseVERT}
65 }
66
67 \renewcommand{\lstlistingname}{Source}
68 \renewcommand{\labelitemi}{$\bullet$}
69
70
71 \newcommand\cs[1]{\texttt{\char`\\#1}}
72 \newcommand\file[1]{\texttt{#1}}
73
74 \parindent0pt
75 \parskip5pt
76
77 \def\syracuseTitle{Les anamorphoses : extensions possibles}
78 %\def\syracuseGraphic{eiffel2}
79
80
81 \makeatletter
82 \def\psparametricplotA{\pst@object{parametricplotA}}% hv 2008-11-22
83 \def\parametricplotA{\pst@object{parametricplotA}}
84 \def\parametricplotA@i#1#2{\@ifnextchar[{\parametricplotA@x{#1}{#2}}{\parametricplotA@x{#1}{#2}[]}}
85 \def\parametricplotA@x#1#2[#3]{\@ifnextchar[{\parametricplotA@xi{#1}{#2}[#3]}{\parametricplotA@xi{#1}{#2}[#3][]}}
86 \def\parametricplotA@xi#1#2[#3][#4]#5{%
87 \pst@killglue%
88 \begingroup%
89 \use@par%
90 \@nameuse{beginplot@\psplotstyle}%
91 \addto@pscode{%
92 \tx@optionsanamorphosis
93 \tx@optionsanamorphosisAdd
94 #3 %prefix PS code
95 \psplot@init
96 /t #1 def
97 /t1 #2 def
98 /dt t1 t sub \psk@plotpoints div def
99 /F@pstplot \ifPst@algebraic (#5)
100 \ifx\psk@PlotDerivative\@none\else
101 \psk@PlotDerivative\space { (t) tx@Derive begin Derive end } repeat
102 \fi\space
103 tx@AlgToPs begin AlgToPs end cvx
104 \else { #5 } \fi def
105 \ifPst@VarStep
106 /StillZero 0 def /LastNonZeroStep dt def
107 /F2@pstplot tx@Derive begin (#5) (t) Derive (t) Derive end
108 \ifx\psk@PlotDerivative\@none\else
109 \psk@PlotDerivative\space { (t) tx@Derive begin Derive end } repeat
110 \fi\space
111 tx@AlgToPs begin AlgToPs end cvx def
112 %% computation of the tolerance defined by plotpoints
113 /epsilon12 \ifx\psk@VarStepEpsilon\@default
114 tx@Derive begin F2@pstplot end Pyth
115 dt 3 exp abs mul
116 \else\psk@VarStepEpsilon\space 12 mul \fi def
117 /ComputeStep {
118 dup 1e-4 lt
119 { pop StillZero 2 ge { LastNonZeroStep 2 mul } { LastNonZeroStep } ifelse /StillZero StillZero 1 add def }
120 { epsilon12 exch div 1 3 div exp /StillZero 0 def }
121 ifelse } bind def
122 \fi
123 /xy {
124 \ifPst@algebraic F@pstplot \else #5 \fi
125 \pst@number\psyunit mul exch
126 \pst@number\psxunit mul exch
127 tx@anamorphosisPathDict begin Anamorphose end
128 } def
129 }%
130 \gdef\psplot@init{}%
131 \@pstfalse
132 \@nameuse{testqp@\psplotstyle}%
133 \if@pst\parametricplotA@ii{#4}\else\parametricplotA@iii{#4}\fi
134 \endgroup%
135 \ignorespaces}
136 %
137 \def\parametricplotA@ii#1{% para is the post code
138 \ifPst@VarStep%
139 \addto@pscode{%
140 mark xy \@nameuse{beginqp@\psplotstyle}
141 { F2@pstplot Pyth ComputeStep
142 t 2 copy add dup t1 gt {pop t1} if /t exch def F2@pstplot Pyth ComputeStep
143 /t 3 -1 roll def 2 copy gt { exch } if pop
144 /t t 3 -1 roll add dup t1 gt {pop t1} if def
145 xy \@nameuse{doqp@\psplotstyle}
146 t t1 eq { exit } if } loop}%
147 \else\pst@killglue%
148 \addto@pscode{%
149 /ps@Exit false def
150 xy \@nameuse{beginqp@\psplotstyle}
151 \psk@plotpoints 1 sub {
152 /t t dt add def
153 xy \@nameuse{doqp@\psplotstyle}
154 ps@Exit { exit } if
155 } repeat
156 ps@Exit not {
157 /t t1 def
158 xy \@nameuse{doqp@\psplotstyle}
159 } if
160 }%
161 \fi%
162 \addto@pscode{ #1 }%
163 \@nameuse{endqp@\psplotstyle}}
164 %
165 \def\parametricplotA@iii#1{%
166 \ifPst@VarStep%
167 \addto@pscode{%
168 /n 2 def
169 mark
170 { xy n 2 roll F2@pstplot Pyth
171 ComputeStep t 2 copy add dup t1 gt {pop t1} if
172 /t exch def F2@pstplot Pyth ComputeStep
173 /t 3 -1 roll def 2 copy gt { exch } if pop
174 /t t 3 -1 roll dup /LastNonZeroStep exch def add dup t1 gt {pop t1} if def /n n 2 add def
175 t t1 eq { exit } if } loop
176 xy n 2 roll}%
177 \else\pst@killglue%
178 \addto@pscode{
179 mark
180 /n 2 def
181 \psk@plotpoints {
182 xy
183 n 2 roll
184 /n n 2 add def
185 /t t dt add def
186 } repeat
187 /t t1 def
188 xy
189 n 2 roll}%
190 \fi%
191 \addto@pscode{ #1 }%
192 \@nameuse{endplot@\psplotstyle}}
193 %
194 %%%%%%%\psframeA ---------------------
195 \def\psframeA{\pst@object{psframeA}}
196 \def\psframeA@i(#1){%
197 \@ifnextchar({\psframeA@ii(#1)}{\psframeA@ii(0,0)(#1)}}
198 \def\psframeA@ii(#1)(#2){%
199 \begin@ClosedObj
200 \pst@getcoor{#1}\pst@tempa%
201 \pst@@getcoor{#2}%
202 \def\pst@linetype{2}%
203 \addto@pscode{%
204 \tx@optionsanamorphosis
205 \tx@optionsanamorphosisAdd
206 \pst@tempa
207 \pst@coor
208 /Y2 ED
209 /X2 ED
210 /Y1 ED
211 /X1 ED
212 X1 Y1 tx@anamorphosisPathDict begin Anamorphose end
213 moveto
214 0 0.005 1.0 { %(X1,Y1)->(X2,Y1)
215 /K exch def
216 K X2 mul 1 K sub X1 mul add
217 Y1
218 tx@anamorphosisPathDict begin Anamorphose end
219 lineto
220 } for
221 0 0.005 1.0 { % (X2,Y1)->(X2,Y2)
222 /K exch def
223 X2
224 K Y2 mul 1 K sub Y1 mul add
225 tx@anamorphosisPathDict begin Anamorphose end
226 lineto
227 } for
228 0 0.005 1.0 { % (X2,Y2)->(X1,Y2)
229 /K exch def
230 K X1 mul 1 K sub X2 mul add
231 Y2
232 tx@anamorphosisPathDict begin Anamorphose end
233 lineto
234 } for
235 0 0.005 1.0 { % (X1,Y2)->(X1,Y1)
236 /K exch def
237 X1
238 K Y1 mul 1 K sub Y2 mul add
239 tx@anamorphosisPathDict begin Anamorphose end
240 lineto
241 } for
242 }%
243 \showpointsfalse
244 \end@ClosedObj}
245 %
246 %%%%%%%\translateA ---------------------------
247 \def\translateA{\def\pst@par{}\pst@object{translateA}}
248 \def\translateA@i(#1){{%
249 \pst@@getcoor{#1}%
250 \addto@pscode{
251 \tx@optionsanamorphosis
252 \tx@optionsanamorphosisAdd
253 \pst@coor
254 tx@anamorphosisPathDict begin Anamorphose end
255 translate}}}%
256 %
257
258
259
260
261 \begin{document}
262
263 %% === BEGIN == Page de garde =================================================
264
265 \thispagestyle{empty}
266
267 \pstPutAbs(0,-29.7){%
268 \begin{pspicture}(0,0)(21,29.7)
269 \pspolygon[fillstyle=solid,linecolor=syracuseVERT,fillcolor=syracuseVERT](0,0)(10.5,14.85)(21,0)
270 \pspolygon[fillstyle=solid,linecolor=syracuseGRIS,fillcolor=syracuseGRIS](0,0)(21,29.7)(0,29.7)
271 \pspolygon[fillstyle=solid,linecolor=syracuseGRIS!50,fillcolor=syracuseGRIS!50](21,0)(10.5,14.85)(21,29.7)
272 \end{pspicture}
273 }
274 \pstPutAbs(2.5,-3.75){%
275 \includegraphics[scale=1]{pst-anamorphosis}
276 }
277 \pstPutAbs(2.5,-5.25){%
278 \LARGE \textbf{\syracuseTitle}
279 }
280 \pstPutAbs(2.5,-13.5){%
281 \begin{pspicture}(0,0)(12,12)
282 \rput(4,4){\includegraphics[height=8cm]{Eiffel}}
283 %\rput(4,4){\includegraphics[height=8cm]{\syracuseGraphic}}
284 %\psframe(0,0)(8,8)
285 \end{pspicture}
286 }
287 \pstPutAbs(12.5,-15){%
288 \parbox{0.4\textwidth}{\Large\raggedleft
289 {\LARGE\textbf{Contributeurs}}\\[0.2cm]
290 J\"{u}rgen \textsc{Gilg}\\
291 Manuel \textsc{Luque}\\
292 Jean-Michel \textsc{Sarlat}
293 }}
294 \vfill
295 \begin{center}
296 \textcolor{white}{\textbf{\today}}\\[0.3cm]
297 \textcolor{white}{\url{http://melusine.eu.org/syracuse/G/pst-anamorphosis/}}\\
298 \includegraphics[scale=0.4]{logo_syracuse}
299 \end{center}
300
301 %% == END == Page de garde ====================================================
302
303 \newpage
304
305
306 \begin{abstract}
307 Il est relativement facile d'adapter les commandes de \textsf{PSTricks} \`{a} \textsf{pst-anamorphosis}. C'est ainsi que la plupart des macros de \textsf{pst-anamorphosis-add} sont des adaptations de celles de \textsf{PStricks}. Toutes ne l'on pas \'{e}t\'{e} pour ne pas alourdir inutilement le package. Nous allons d\'{e}tailler sur un exemple la fa\c{c}on de proc\'{e}der.
308
309 Remarque : toutes les macros ne sont pas adaptables, cela serait le cas si les anamorphoses transformaient une ligne droite en une ligne droite. Or, \`{a} part la perspective, ce n'est pas le cas. En cons\'{e}quence, \verb+\psline+, \verb+\psframe+, \verb+\pspolygon+ doivent \^{e}tre r\'{e}\'{e}crits en divisant le segment initial en un grand nombre de petits segments : pour \verb+\pslineA+ par exemple chaque segment initial est divis\'{e} en 200 parties et ceci quelle que soit sa longueur, dans l'id\'{e}al il faudrait tenir compte de la longueur du segment avant de choisir le nombre de segmentations.
310 \end{abstract}
311
312
313 \section{\textbackslash{}psparametricplotA}
314
315 \subsection{Adaptation}
316
317 \`{A} partir d'une copie de \textbackslash{}\textsf{psparametricplot} :
318 \begin{enumerate}
319 \item On remplace parout \textsf{psparametricplot} par \textsf{psparametricplotA} ;
320 \item dans le premier \verb+\addto@pscode{%+
321 \begin{lstlisting}
322 \addto@pscode{%
323 \tx@optionsanamorphosis
324 \tx@optionsanamorphosisAdd
325 #3 %prefix PS code
326 \psplot@init
327 \end{lstlisting}
328 on introduit juste au d\'{e}but les variables de \textsf{pst-anamorphosis} ;
329 \item et pour terminer dans \verb+/xy {+:
330 \begin{lstlisting}
331 /xy {
332 \ifPst@algebraic F@pstplot \else #5 \fi
333 \pst@number\psyunit mul exch
334 \pst@number\psxunit mul exch
335 tx@anamorphosisPathDict begin Anamorphose end
336 } def
337 \end{lstlisting}
338 on ins\`{e}re \`{a} la fin les calculs propres \`{a} l'anamorphose. C'est termin\'{e}, la macro est op\'{e}rationnelle !
339 \end{enumerate}
340
341
342 \subsection{Exemple}
343
344 \begin{center}
345 \begin{pspicture}(-6,-6)(6,6)
346 \pscircle[doubleline=true]{3}
347 \psset{type=conical}
348 \pscircle[linecolor=blue](0,0){1}
349 \pscircleA[linecolor=blue](0,0){1}
350 \pscircle[linecolor=blue](0,0){2}
351 \pscircleA[linecolor=blue](0,0){2}
352 \psframeA[linecolor=blue,fillstyle=solid,fillcolor=cyan](1,1)(2,2)
353 \psframeA[linecolor=blue,fillstyle=solid,fillcolor=cyan](-1,-1)(-2,-2)
354 \psframeA[linecolor=blue,fillstyle=solid,fillcolor=cyan](-1,1)(-2,2)
355 \psframeA[linecolor=blue,fillstyle=solid,fillcolor=cyan](1,-1)(2,-2)
356 \psframe[linecolor=blue,fillstyle=solid,fillcolor=cyan](1,1)(2,2)
357 \psframe[linecolor=blue,fillstyle=solid,fillcolor=cyan](-1,-1)(-2,-2)
358 \psframe[linecolor=blue,fillstyle=solid,fillcolor=cyan](-1,1)(-2,2)
359 \psframe[linecolor=blue,fillstyle=solid,fillcolor=cyan](1,-1)(2,-2)
360 \parametricplotA[plotpoints=3600,linecolor=red,linewidth=1mm]{0}{360}{%
361 /Radius 1.5 0.5 t 10 mul sin mul add def
362 Radius t cos mul
363 Radius t sin mul
364 }
365 \parametricplot[plotpoints=3600,linecolor=red,linewidth=1mm]{0}{360}{%
366 /Radius 1.5 0.5 t 10 mul sin mul add def
367 Radius t cos mul
368 Radius t sin mul
369 }
370 \multido{\n=0.5+0.5,\N=0.5+0.5}{4}{%
371 \pnode(! \n\space -2){A}
372 \pnode(! \n\space 2){B}
373 \psline(A)(B)
374 \pslineA(A)(B)
375 \pnode(!-2 \N){A}
376 \pnode(!2 \N){B}
377 \pslineA(A)(B)
378 \psline(A)(B)
379 }
380 \multido{\n=-2.0+0.5,\N=-2.0+0.5}{4}{%
381 \pnode(! \n\space -2){A}
382 \pnode(! \n\space 2){B}
383 \psline(A)(B)
384 \pslineA(A)(B)
385 \pnode(!-2 \N){A}
386 \pnode(!2 \N){B}
387 \pslineA(A)(B)
388 \psline(A)(B)
389 }
390 \psline(-2,0)(2,0)
391 \psline(0,-2)(0,2)
392 \pslineA(0,-2)(0,-0.5)
393 \pslineA(0,2)(0,0.5)
394 \pslineA(-2,0)(-0.5,0)
395 \pslineA(2,0)(0.5,0)
396 \psdot[dotstyle=x,dotsize=.2](0,0)
397 \end{pspicture}
398 \end{center}
399 \begin{lstlisting}
400 \parametricplotA[plotpoints=3600,linecolor=red,linewidth=1mm]{0}{360}{%
401 /Radius 1.5 0.5 t 10 mul sin mul add def
402 Radius t cos mul
403 Radius t sin mul
404 }
405 \parametricplot[plotpoints=3600,linecolor=red,linewidth=1mm]{0}{360}{%
406 /Radius 1.5 0.5 t 10 mul sin mul add def
407 Radius t cos mul
408 Radius t sin mul
409 \end{lstlisting}
410
411
412 \section{\textbackslash{}psframeA}
413
414 \verb+\psframeA(x1,y1)(x2,y2)+ a les m\^{e}mes propri\'{e}t\'{e}s que \verb+\psframe+
415 \begin{center}
416 \begin{pspicture}(-6,-6)(6,6.5)
417 \psset{type=conical,Rmirror=3}
418 \psframeA[fillstyle=solid,fillcolor=blue,linecolor=blue](-0.25,-0.25)(-0.01,-0.01)
419 \psframeA[fillstyle=solid,fillcolor=blue,linecolor=blue](-0.25,0.25)(-0.01,0.01)
420 \psframeA[fillstyle=solid,fillcolor=blue,linecolor=blue](0.01,0.01)(0.25,0.25)
421 \psframeA[fillstyle=solid,fillcolor=blue,linecolor=blue](0.01,-0.01)(0.25,-0.25)
422 \multido{\ry=-2.75+1,\rY=-2.25+1}{6}{
423 \multido{\n=-2.75+1.00,\N=-2.25+1.00}{7}{%
424 \psframeA[fillstyle=solid,fillcolor=red,linecolor=red](\n,\ry)(\N,\rY)}
425 }
426 \multido{\ry=-3.25+1,\rY=-2.75+1}{3}{
427 \multido{\n=-3.25+1.00,\N=-2.75+1.00}{7}{%
428 \psframeA[fillstyle=solid,fillcolor=blue,linecolor=blue](\n,\ry)(\N,\rY)}
429 }
430 \multido{\ry=0.75+1,\rY=1.25+1}{3}{
431 \multido{\n=-3.25+1.00,\N=-2.75+1.00}{7}{%
432 \psframeA[fillstyle=solid,fillcolor=blue,linecolor=blue](\n,\ry)(\N,\rY)}
433 }
434 \multido{\n=-3.25+1.00,\N=-2.75+1.00}{3}{%
435 \psframeA[fillstyle=solid,fillcolor=blue,linecolor=blue](\n,-0.25)(\N,0.25)}
436 \multido{\n=0.75+1.00,\N=1.25+1.00}{3}{%
437 \psframeA[fillstyle=solid,fillcolor=blue,linecolor=blue](\n,-0.25)(\N,0.25)}
438 \begin{psclip}{\pscircle[fillstyle=solid,fillcolor=white,linestyle=none]{3}}
439 \multido{\ry=-2.75+1,\rY=-2.25+1}{6}{
440 \multido{\n=-2.75+1.00,\N=-2.25+1.00}{6}{%
441 \psframe*[linecolor=red](\n,\ry)(\N,\rY)}
442 }
443 \multido{\ry=-3.25+1,\rY=-2.75+1}{7}{
444 \multido{\n=-3.25+1.00,\N=-2.75+1.00}{7}{%
445 \psframe*[linecolor=blue](\n,\ry)(\N,\rY)}
446 }
447 \pscircle[doubleline=true]{3}
448 \end{psclip}
449 \end{pspicture}
450 \end{center}
451 \begin{lstlisting}
452 \multido{\ry=-2.75+1,\rY=-2.25+1}{6}{
453 \multido{\n=-2.75+1.00,\N=-2.25+1.00}{7}{%
454 \psframeA[fillstyle=solid,fillcolor=red,linecolor=red](\n,\ry)(\N,\rY)}
455 }
456 \multido{\ry=-3.25+1,\rY=-2.75+1}{3}{
457 \multido{\n=-3.25+1.00,\N=-2.75+1.00}{7}{%
458 \psframeA[fillstyle=solid,fillcolor=blue,linecolor=blue](\n,\ry)(\N,\rY)}
459 }
460 \end{lstlisting}
461
462
463 \section{\textbackslash{}pspolygonA}
464
465 En r\'{e}alit\'{e} la macro \verb+pspolygonA+ n'a pas \'{e}t\'{e} \'{e}crite. En effet il suffit de servir de \verb+\pslineA+ et de boucler le chemin en revenant au point origine.
466 \begin{center}
467 \begin{pspicture}(-5,-5)(5,5)
468 \psset{type=conical,Rmirror=3}
469 \pspolygon[linecolor=red,linewidth=1mm](2.5;30)(2.5;90)(2.5;150)(2.5;210)(2.5;270)(2.5;330)
470 \pslineA[linecolor=red,linewidth=1mm](2.5;30)(2.5;90)(2.5;150)(2.5;210)(2.5;270)(2.5;330)(2.5;30)
471 \rput(1.25,1){\pspolygon[linecolor=blue,fillstyle=solid,linewidth=1mm,fillcolor={[rgb]{1 0.875 0.5}}](0.75;30)(0.75;90)(0.75;150)(0.75;210)(0.75;270)(0.75;330)}
472 \multido{\i=30+60,\I=1+1}{6}{%
473 \pnode(!\i\space cos 0.75 mul 1.25 add \i\space sin 0.75 mul 1 add){A\I}
474 }
475 \pslineA[linecolor=blue,fillstyle=solid,linewidth=1mm,fillcolor={[rgb]{1 0.875 0.5}}](A1)(A2)(A3)(A4)(A5)(A1)
476 \pscircle[doubleline=true]{3}
477 \psdot[dotstyle=x](0,0)
478 \end{pspicture}
479 \end{center}
480 \begin{lstlisting}
481 \begin{pspicture}(-5,-5)(5,5)
482 \psset{type=conical,Rmirror=3}
483 \pspolygon[linecolor=red,linewidth=1mm](2.5;30)(2.5;90)(2.5;150)(2.5;210)(2.5;270)(2.5;330)
484 \pslineA[linecolor=red,linewidth=1mm](2.5;30)(2.5;90)(2.5;150)(2.5;210)(2.5;270)(2.5;330)(2.5;30)
485 \rput(1.25,1){\pspolygon[linecolor=blue,fillstyle=solid,linewidth=1mm,fillcolor={[rgb]{1 0.875 0.5}}](0.75;30)(0.75;90)(0.75;150)(0.75;210)(0.75;270)(0.75;330)}
486 \multido{\i=30+60,\I=1+1}{6}{%
487 \pnode(!\i\space cos 0.75 mul 1.25 add \i\space sin 0.75 mul 1 add){A\I}
488 }
489 \pslineA[linecolor=blue,fillstyle=solid,linewidth=1mm,fillcolor={[rgb]{1 0.875 0.5}}](A1)(A2)(A3)(A4)(A5)(A1)
490 \pscircle[doubleline=true]{3}
491 \psdot[dotstyle=x](0,0)
492 \end{pspicture}
493 \end{lstlisting}
494 On remarquera que le \verb+\rput(1.25,1)+ doit \^{e}tre remplac\'{e} par un calcul adapt\'{e}. La macro \verb+\rputA+ n'a pas \'{e}t\'{e} d\'{e}finie.
495 \end{document}

Licence Creative Commons Les fichiers de Syracuse sont mis à disposition (sauf mention contraire) selon les termes de la
Licence Creative Commons Attribution - Pas d’Utilisation Commerciale - Partage dans les Mêmes Conditions 4.0 International.