====== Différences ====== Cette page vous donne les différences entre la révision choisie et la version actuelle de la page.
pstricks:ml20070927 [2007/09/27 11:15] jms créée |
pstricks:ml20070927 [2007/09/28 19:45] (Version actuelle) jms modification de la taille d'affichage de l'image |
||
---|---|---|---|
Ligne 3: | Ligne 3: | ||
Pour placer un texte à un endroit précis d'une spirale, c'est relativement simple, comme dans l'exemple ci-dessous. Faire une commande à partir d'une liste de mots c'est une autre paire de manches, mais ça doit être possible : cela demande réflexion... | Pour placer un texte à un endroit précis d'une spirale, c'est relativement simple, comme dans l'exemple ci-dessous. Faire une commande à partir d'une liste de mots c'est une autre paire de manches, mais ça doit être possible : cela demande réflexion... | ||
- | {{ pstricks:ml20070927.png }} | + | Pour gérer une liste de mots ou expressions, le package arrayjob semble le plus simple à utiliser et le plus approprié ! |
+ | Voici donc une ébauche de ce que pourrait être une mise en place automatique des chapitres sur la spirale. Reste à définir pour la spirale une équation qui donne une mise en page correcte. | ||
+ | |||
+ | {{ pstricks:ml20070928.png?600x449 }} | ||
+ | |||
+ | <code latex> | ||
+ | \documentclass{article} | ||
+ | \usepackage[latin1]{inputenc} | ||
+ | \usepackage[T1]{fontenc} | ||
+ | \usepackage{pst-plot} | ||
+ | \usepackage{arrayjob} | ||
+ | |||
+ | \makeatletter | ||
+ | |||
+ | % D.G. addition - Jun. 9, 1998 - Polar plots using the \psplot macro | ||
+ | % Code added according the way suggested by Ulrich Dirr <udirr@das-team.com> | ||
+ | |||
+ | % For polar plots | ||
+ | \newif\ifpolarplot | ||
+ | \def\psset@polarplot#1{\@nameuse{polarplot#1}} | ||
+ | \psset@polarplot{false} | ||
+ | |||
+ | \def\psplot@i#1#2#3{% | ||
+ | \pst@killglue | ||
+ | \begingroup | ||
+ | \use@par | ||
+ | \@nameuse{beginplot@\psplotstyle}% | ||
+ | % D.G. modification begin - Jun. 9, 1998 | ||
+ | \ifpolarplot | ||
+ | \addto@pscode{% | ||
+ | \psplot@init | ||
+ | /x #1 def | ||
+ | /x1 #2 def | ||
+ | /dx x1 x sub \psk@plotpoints div def | ||
+ | /xy {% Adapted from \parametricplot@i | ||
+ | #3 dup x cos mul exch x sin mul | ||
+ | \pst@number\psxunit mul exch | ||
+ | \pst@number\psyunit mul exch | ||
+ | } def}% | ||
+ | \else | ||
+ | % D.G. modification end | ||
+ | \addto@pscode{% | ||
+ | \psplot@init | ||
+ | /x #1 def | ||
+ | /x1 #2 def | ||
+ | /dx x1 x sub \psk@plotpoints div def | ||
+ | /xy { | ||
+ | x \pst@number\psxunit mul | ||
+ | #3 \pst@number\psyunit mul | ||
+ | } def}% | ||
+ | % D.G. modification begin - Jun. 9, 1998 | ||
+ | \fi | ||
+ | % D.G. modification end | ||
+ | \gdef\psplot@init{}% | ||
+ | \@pstfalse | ||
+ | \@nameuse{testqp@\psplotstyle}% | ||
+ | \if@pst | ||
+ | \psplot@ii | ||
+ | \else | ||
+ | \psplot@iii | ||
+ | \fi | ||
+ | \endgroup | ||
+ | \ignorespaces} | ||
+ | |||
+ | \makeatother | ||
+ | |||
+ | \makeatletter | ||
+ | % de nouvelles flèches de Christophe FOUREY | ||
+ | % http://tug.org/mailman/htdig/pstricks/2007/004294.html | ||
+ | % v : Vee arrow (inside) | ||
+ | % V : Vee arrow (outside) | ||
+ | % f : Filled vee arrow (inside) | ||
+ | % F : Filled vee arrow (outside) | ||
+ | \edef\pst@arrowtable{\pst@arrowtable,v-v,V-V,f-f,F-F} | ||
+ | |||
+ | % Vee arrow | ||
+ | \def\psset@veearrowlength#1{\pst@getlength{#1}\psk@veearrowlength} | ||
+ | \psset@veearrowlength{3mm} % default projected length | ||
+ | \def\psset@veearrowangle#1{\pst@getangle{#1}\psk@veearrowangle} | ||
+ | \psset@veearrowangle{30} % default angle | ||
+ | \def\psset@veearrowlinewidth#1{\pst@getlength{#1}\psk@veearrowlinewidth} | ||
+ | \psset@veearrowlinewidth{.35mm} % default vee arrow line width | ||
+ | |||
+ | % Filled vee arrow | ||
+ | \def\psset@filledveearrowlength#1{\pst@getlength{#1} | ||
+ | \psk@filledveearrowlength} | ||
+ | \psset@filledveearrowlength{3mm} % default projected length | ||
+ | \def\psset@filledveearrowangle#1{\pst@getangle{#1} | ||
+ | \psk@filledveearrowangle} | ||
+ | \psset@filledveearrowangle{15} % default angle | ||
+ | \def\psset@filledveearrowlinewidth#1{\pst@getlength{#1} | ||
+ | \psk@filledveearrowlinewidth} | ||
+ | \psset@filledveearrowlinewidth{.35mm} % default vee arrow line width | ||
+ | |||
+ | \pst@def{VeeArrow}<% | ||
+ | 1 setlinecap % round caps | ||
+ | 1 setlinejoin % round join | ||
+ | setlinewidth % vee arrow line width | ||
+ | /y ED % projected length | ||
+ | 2 div /a ED % angle (divide by 2) | ||
+ | /t ED % false = inside, true = outside | ||
+ | a sin a cos div y mul /x ED % perpendicular length : x=tan(a).y | ||
+ | t { 1 -1 scale } if % if outside : symmetry | ||
+ | x neg y moveto % point #1 | ||
+ | 0 0 L % point #2 | ||
+ | x y L % point #3 | ||
+ | {closepath gsave fill grestore} if % if filled : close and fill | ||
+ | stroke % draw line | ||
+ | 0 t {y 2 mul} {0} ifelse moveto> % if outside : twice longer line | ||
+ | |||
+ | % VeeArrow : filled? outside? (total) angle (projected) length (arrow) line width | ||
+ | |||
+ | \@namedef{psas@v}{% | ||
+ | false false \psk@veearrowangle \psk@veearrowlength | ||
+ | \psk@veearrowlinewidth \tx@VeeArrow} | ||
+ | |||
+ | \@namedef{psas@V}{% | ||
+ | false true \psk@veearrowangle \psk@veearrowlength | ||
+ | \psk@veearrowlinewidth \tx@VeeArrow} | ||
+ | |||
+ | \@namedef{psas@f}{% | ||
+ | true false \psk@filledveearrowangle \psk@filledveearrowlength | ||
+ | \psk@filledveearrowlinewidth \tx@VeeArrow} | ||
+ | |||
+ | \@namedef{psas@F}{% | ||
+ | true true \psk@filledveearrowangle \psk@filledveearrowlength | ||
+ | \psk@filledveearrowlinewidth \tx@VeeArrow} | ||
+ | |||
+ | |||
+ | \makeatother | ||
+ | \pagestyle{empty} | ||
+ | \SpecialCoor | ||
+ | \listfiles | ||
+ | \begin{document} | ||
+ | \newarray\suites | ||
+ | \readarray{suites}{\shortstack{suites\\ arithmétiques}&\shortstack{suites\\ géométriques}&variation d'une suite} | ||
+ | \newarray\proba | ||
+ | \readarray{proba}{probabilité&\shortstack{probabilité\\ d'un événement}&\shortstack{expérimentation\\ et simulation}} | ||
+ | \psset{plotpoints=360} | ||
+ | % | ||
+ | \begin{center} | ||
+ | \begin{pspicture}(-4,-5)(10,5) | ||
+ | % 0<t<1440 en degrés | ||
+ | % r=k*(t+1)^2 avec k=0.01 | ||
+ | % t en degrés -> x en degrés -> angle = x*0.01745 en radians | ||
+ | \newcommand\radius{0.01745 mul 1 add dup mul 0.01 mul } | ||
+ | \psplot[polarplot=true,linecolor=red]{0}{1440}{x \radius} | ||
+ | \multido{\i=200+360,\I=400+360}{3}{% | ||
+ | \psplot[polarplot=true,arrows=-v,arrowsize=0.5,linecolor=red,arrowinset=0]{\i}{\I}{x \radius}} | ||
+ | \psline(7;60) | ||
+ | \psline(10;0) | ||
+ | \begingroup | ||
+ | \psset{framesep=0pt} | ||
+ | \multido{\i=1+1,\Is=420+360,\Ip=720+360}{3}{% | ||
+ | \rput*(!/x \Is\space def x cos x \radius mul x sin x \radius mul ){\color{blue}\suites(\i)} | ||
+ | \rput*(!/x \Ip\space def x cos x \radius mul x sin x \radius mul ){\color{red!80}\proba(\i)} | ||
+ | } | ||
+ | \endgroup | ||
+ | \rput*(10;0){\psframebox{\color{red!80}{PROBALITÉS}}} | ||
+ | \rput*(7;60){\psframebox{\color{blue}{SUITES}}} | ||
+ | \end{pspicture} | ||
+ | \end{center} | ||
+ | \end{document} | ||
+ | |||
+ | </code> | ||