Trucs LATEX François Couloigner, 1er avril 2011

1 Figures PsTricks

Les exemples présents sur le site (en anglais) donnent un aperçu de la richesse de PSTricks Il est aussi instructif de parcourir les fichiers de description des modules de pstricks (toujours sur le site)

1.1 Place réservée pour une figure Lors de la compilation, la seule chose que LaTeX retient des commandes PSTricks est l’environnement \pspicture pour la mise en page. Tout le reste sera pris en charge par dvips qui produit le document postscript (qui sera ensuite transformé en un ) Quand il rencontre \pspicuture[shift=dim](Xmin,Ymin)(Xmax,Ymax), LaTeX créé une boite de dimensions Xmax−Xmin et Ymax−Ymin posée sur la ligne de base qu’il relève de dim (éventuellement négatif) (voir Figure 1) Xmin, Xmax, Ymin, Ymax, dim sont des dimensions exprimées en cm, mm, pt, em . . . ou sans dimension car PSTricks utilise une dimension par défaut appelée unit (1cm par défaut). Il y a aussi des unités par défaut pour les abscisses et les ordonnées xunit et yunit qui coïncident avec unit par défaut ou si unit est modifié

Commençons avec un document produit par GeoGebra. Dans GeoGebra saisissons la commande Courbe[(1+0.1*t)* cos(t), (1+0.1*t)* sin(t),t,0,20]

Un export au format PSTricks donne :

1 \begin{pspicture*}(-2.2,-2)(2.7,2) 1 2 \psgrid[subgriddiv=0,gridlabels=0,gridcolor=lightgray](0,0)(-2.2,-2)(2.7,2) 3 \psset{xunit=1.0cm,yunit=1.0cm,algebraic=true,dotstyle=o,dotsize=3pt 0, linewidth=0.8pt,arrowsize=3pt 2,arrowinset=0.25} 4 \psaxes[labelFontSize=\scriptstyle,xAxis=true,yAxis=true,Dx=1,Dy=1,ticksize=-2 −2 −1 1 2 pt 0,subticks=2]{->}(0,0)(-2.2,-2)(2.7,2) −1 5 \parametricplot{0.0}{20}{(1+0.1*t)*COS(t)|(1+0.1*t)*SIN(t)} 6 \end{pspicture*}

−2

GeoGebra utilise la version étoilée de l’environnement pspicture. De nombreuses commandes PSTricks ont une version étoilée. (voir Figure 1) idem avec le paramètre shift = -1

ligne de base 2cm sur 2cm

version *

Figure 1 – pspicture

b b b b b b b b b b 1.2 Outils de Texmaker b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b Texmaker peut nous aider à personnaliser ce qu’a produit GeoGebra, la b b b b b b b b b b b b b b b b b b b zone d’outils à gauche de la zone d’édition a un bouton PS donnant accès b b b b b b b b b b b b b b b b à un grand nombre de commandes PSTricks. b b b b b b b b b b b b b b b b b b b En parcourant les options possibles on peut par exemple arriver à la figure b b b b b b b b b b b b b b b b b b b b b b b b b b ci-contre b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b

1/4 1.3 Des figures sans GeoGebra 1.3.1 Papier millimétré

1 \begin{pspicture}(-4,-1)(4,1) 2 \psgrid[gridlabels=0pt,subgriddiv=0,gridwidth=0.2pt,unit =0.1,gridcolor=gray](0,0)(-40,-10)(40,10) 3 \psgrid[gridlabels=0pt,subgriddiv=2,gridcolor=gray](0,0) (-4,-1)(4,1) 4 \psplot{-4}{4}{x 180 mul Pi div sin} 5 \end{pspicture}

1.3.2 Diagramme 7

6 1 \begin{pspicture}(8,7) b b C 2 \psset{showpoints=true} % inutile dans la version finale 5 3 \psgrid[labelFontSize=\scriptstyle](8,7) % idem b 4 \psset{fillstyle=solid,opacity=0.5,linewidth=0.1mm} 4 5 \psccurve[fillcolor=blue](2,1)(5,4)(2.2,6)(0.2,4) b A b 6 \rput(1.2,4.2){\Large A} A ∩ B ∩ C 3 7 \psccurve[fillcolor=orange](1.5,3)(5,0.5)(7,3) b b 8 \rput(5.5,1.6){ \Large B}

b 2 9 \psccurve[fillcolor=gray](4,2.5)(7,6)(2,5) 10 \rput(5.5,5.5){\Large C} B 11 \rput(3.65,3.6){ $\T A \cap \T B \cap \T C$} 1 b 12 \end{pspicture}

b 0 0 1 2 3 4 5 6 7 8 1.3.3 courbe de Bézier 2 1 \begin{pspicture}(-3,-3)(4,2) 1 2 \psgrid[labelFontSize=\scriptstyle](0,0)(-3,-3)(4,2) b bb b 3 \psset{showpoints=true}

b 4 \pnode(-2,-2){A} \pnode(2,1){B} 0 5 \rput(A){\pnode(2,0){TA}} -3 -2 -1 0 1 2 3 4 6 \rput(B){\pnode(-1,0){TB}} 7 \psbezier[showpoints=true](A)(TA)(TB)(B) -1 b 8 \pnode(3,-1){C} 9 \rput(C){\pnode(-0.3,1.5){TC}} 10 \rput(B){\pnode(0.3,0){TB}} b-2 b 11 \psbezier[showpoints=true](B)(TB)(TC)(C) 12 \end{pspicture} -3

1.3.4 Arbre Sujet : http://www.apmep.asso.fr/IMG/pdf/AntillesS23juin2009.pdf

0 9 16 1 \psset{fillstyle=solid} %pour colorer certains disques 6 2 \pstree[treesep=1cm, levelsep=3cm,treemode=R] 0 16 1 3 {\Tdot}{ 1 4 \pstree{\Tcircle{0}\ncput*{\small $ \frac{9}{16} $}}{ 16 5 \Tcircle{0}\ncput*{\small $ \frac{9}{16} $} 9 6 \Tcircle{1}\ncput*{\small $ \frac{6}{16} $} 16 2 7 \Tcircle[fillcolor=orange]{2}\ncput*{\small $ \frac{1}{16} $} 8 } 9 \pstree{\Tcircle{1}\ncput*{\small $\frac{6}{16}$}}{ b 10 \Tcircle{0}\ncput*{\small $ \frac{3}{4} $} 6 3 0 11 \Tcircle{1}\ncput*{\small $ \frac{1}{4} $} 16 12 } 1 4 1 13 \Tcircle[fillcolor=orange]{2}\ncput*{\small $\frac{1}{16}$} 16 1 4 14 } 1

2

2/4 1.4 Placer des repères PSTricks

Nœuds (nodes) en langage PSTricks. Quelques exemples :

1.4.1 Sur la page On obtenir avec le code : Paragraphe qu’on veut \pnode(-2mm,1mm){A} \rput(2mm,1mm)\pnode(\linewidth,0){B’} marquer, par exemple une Paragraphe qu’on veut marquer, par exemple une démonstration. \par démonstration. Blabla, \par Blabla, blabla,\par blabla, \pnode(-2mm,0){B} \rput(2mm,0)\pnode(\linewidth,0){B’} Fin. Fin \pslineByHand(A)(B) \pslineByHand(A’)(B’) (B) Autre exemple \ovalnode{P}{Autre exemple} \ncarc[linecolor=gray]{N}{P}

1.4.2 Dans une figure L’utilisation des nœuds simplifie la réalisation de figures où certains objets dépendent d’autres objets.

U 1 \begin{pspicture}(0.5,-0.4)(5,4.5) R 2 \pnode(1,2){P} \pnode(4,0){Q} 3 \pnode(0.5,1.5){u} 4 \AplusB(P)(u){R} \AplusB(Q)(u){S} 5 \pspolygon(P)(Q)(S)(R) \uput[180](P){P} \uput[-90](Q){Q} \uput[100](R) {R} \uput*[200](S){S} P 6 \psRelNodeVar(S)(Q)(1;90){T} S 7 \psRelNodeVar(S)(R)(1;-90){U} T 8 \pspolygon[fillstyle=solid,fillcolor=gray](Q)(S)(T) \uput[0](T){T} 9 \pspolygon[fillstyle=solid,fillcolor=gray](R)(S)(U) \uput[-30](U){U} 10 \end{pspicture} Q

1.4.3 Des nœuds et des connecteurs : organigramme

Entrer a>b > 0 1 \psset{xunit=4.5cm,yunit=1.5cm} 2 \begin{pspicture}(-0.8,-0.5)(2,4.4) 3 \psset{arrows=->} % s’applique a tous les connecteurs 4 \rput(0,4){\rnode{A}{\psframebox{Entrer $a>b\geqslant 0$}}} b =0 oui 5 \rput(0,3){\dianode{B}{$b=0$}} 6 \rput(0,2) {\rnode{C}{\psframebox{reste de la division de $a$ non par $b \rightarrow r$ }}} 7 \rput(0,1){\rnode{D}{\psframebox{\shortstack{ reste de la division de a par b → r 8 $b \rightarrow a$\\ $r \rightarrow b$}}}} 9 \rput(0,0){\rnode{E}{\psframebox{Afficher $a$}}} 10 11 \ncline{A}{B}% \ncput[npos=0.5]{\pnode{X}} b → a 12 \ncangle[linearc=.3,arm=2.5]{B}{E} \ncput*[npos=0.5]{oui} r → b 13 \ncline{B}{C} \ncput*{non} % \nbput*{non} 14 \ncline{C}{D} 15 \ncangle[angle=180, linearc=.3,arm=2.5]{D}{B} %armB=-90 Afficher a 16 \end{pspicture}

3/4 2 Algorithmique 2.1 multido

1 \begin{pspicture}(5,4.5) 2 \psset{linestyle=dotted,dotsep=1,linewidth=2pt} 3 \newcommand{\deuxlignes}{ 4 \psline(0,0)(5,0) 5 \rput(1;60){ \psline(0,0)(5,0) } 6 % rput translate ce qui est entre accolades 7 % du vecteur (1;60) (coordonnees polaires) 8 } 9 \multido{\r=0+1.732}{3}{ \rput(0,\r){\deuxlignes} } 10 \end{pspicture}

2.2 ifthenelse

1 \begin{center} 2 \begin{pspicture}(-1,-1)(1,1) 3 \psset{fillstyle=solid,linestyle=none} 4 \multido{\i=0+3}{77}{ 5 \ifthenelse{\isodd{\i}} % du package ifthenelse 6 {\rput{\i}(0,0){\psframe[fillcolor=white](-1,-1)(1,1)}} 7 {\rput{\i}(0,0){\psframe[fillcolor=black](-1,-1)(1,1)}} 8 \psset{unit=0.95} 9 } 10 \end{pspicture} 11 \end{center}

2.3 Algorithme d’Euclide • Latex gère des compteurs (numéros de pages, de sections,. . .) qu’on peut voir comme des variables entières • Le module (package) calc permet les opérations sur les compteurs • Le module (package) ifthen introduit la commande whiledo

1 \newcounter{a} 2 \newcounter{b} 3 \newcounter{r} 4 \newcommand{\euclide}[2]{ 5 \ifthenelse{#2>#1} 6 {\setcounter{a}{#2} \setcounter{b}{#1}} 7 {\setcounter{a}{#1} \setcounter{b}{#2}} 8 $\whiledo{\value{b}>0}{% D D D D D (18, 7) = (7, 4) = (4, 3) = (3, 1) = (1) 9 \mathscr D(\arabic{a},\arabic{b})=% 10 \setcounter{r}{\value{a}-\value{a}/\value{b}*\value{b}} 11 \setcounter{a}{\value{b}} 12 \setcounter{b}{\value{r}} 13 } 14 \mathscr D(\arabic{a})$ 15 } 16 \euclide{7}{18}

4/4