IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Programmation (La)TeX avancée Discussion :

Macro, boucle, test et amélioration de code


Sujet :

Programmation (La)TeX avancée

  1. #1
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2014
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2014
    Messages : 37
    Points : 74
    Points
    74
    Par défaut Macro, boucle, test et amélioration de code
    Bonjour à tous,

    vous trouverez en pièce jointe le schéma que j'aimerai faire (et que mon code fait). Je suis totalement débutant en programmation latex, si vous avez des bons tutos, je suis aussi preneur.

    Le code générateur est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
     
    \documentclass[french]{article}
    \usepackage{pstricks,pst-node} 
    \usepackage{pstricks-add}
    \usepackage{multido}
    \newcounter{diam}
    \newcounter{anglea}
    \newcounter{angleb}
     
    \begin{document}
     
    	\begin{pspicture*}(-8.10,-8.1)(8.1,8.1)
    	\pspolygon[fillstyle=solid,fillcolor=black,linecolor=black](0,0)(8,8)(0,8)
    	\pspolygon[fillstyle=solid,fillcolor=black,linecolor=black](0,0)(-8,8)(-8,0)
    	\pspolygon[fillstyle=solid,fillcolor=black,linecolor=black](0,0)(-8,-8)(0,-8)
    	\pspolygon[fillstyle=solid,fillcolor=black,linecolor=black](0,0)(8,0)(8,-8)
    	\SpecialCoor
    	\multido{\i=8+-2}{4}{%
    		\setcounter{diam}{\i}
    		\multido{\i=0+90}{4}{
    			\setcounter{anglea}{\i}
    			\setcounter{angleb}{\theanglea}
    			\addtocounter{angleb}{45}
    			\pspolygon[fillstyle=solid,fillcolor=black,linecolor=black](0;0)(\thediam;\theanglea)(\thediam;\theangleb)
    			\psarc[fillstyle=solid,fillcolor=black,linecolor=black](0,0){\thediam}{\theanglea}{\theangleb}
    			%rayure
    			\addtocounter{diam}{-1}
    			\pspolygon[fillstyle=solid,fillcolor=white,linecolor=white](0;0)(\thediam;\theanglea)(\thediam;\theangleb)
    			\psarc[fillstyle=solid,fillcolor=white,linecolor=white](0,0){\thediam}{\theanglea}{\theangleb}	
    			%quartier suivant
    			\addtocounter{anglea}{45}
    			\addtocounter{angleb}{45}
    			\addtocounter{diam}{1}%on retrouve le diametre maximal
    			\pspolygon[fillstyle=solid,fillcolor=white,linecolor=white](0;0)(\thediam;\theanglea)(\thediam;\theangleb)
    			\psarc[fillstyle=solid,fillcolor=white,linecolor=white](0,0){\thediam}{\theanglea}{\theangleb}
    			%rayure
    			\addtocounter{diam}{-1}
    			\pspolygon[fillstyle=solid,fillcolor=black,linecolor=black](0;0)(\thediam;\theanglea)(\thediam;\theangleb)
    			\psarc[fillstyle=solid,fillcolor=black,linecolor=black](0,0){\thediam}{\theanglea}{\theangleb}
    			\addtocounter{diam}{1}%on retrouve le diametre maximal
    		}
    	}
    	\pspolygon[linewidth=1.6pt](-8,-8)(-8,8)(8,8)(8,-8)
    	\psline[linewidth=1.6pt](-8,-8)(8,8)
    	\psline[linewidth=1.6pt](8,-8)(-8,8)
    	\psline[linewidth=1.6pt](8,0)(-8,0)
    	\psline[linewidth=1.6pt](0,8)(0,-8)
    	\end{pspicture*}\\
     
    \end{document}
    J'aimerai pouvoir faire plusieurs choses différemment.

    1) Déjà, j'ai fait deux boucles multido imbriqués avec deux fois la même variable \i. Si je change de nom, il y a une erreur à la compilation. J'aimerai donc savoir si il y a d'autres manières de faire une boucle avec un pas incrémental défini par l'utilisateur?

    2) J'aimerai variabilisé linecolor=black pour mettre une autre couleur avec une macro, mais je n'y arrive pas.

    3) J'aimerai utiliser des test (avec if ou ifnum) et la macro :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    \makeatletter
    \newcommand\modulo[2]{\@tempcnta=#1
    	\divide\@tempcnta by #2
    	\multiply\@tempcnta by #2
    	\multiply\@tempcnta by -1
    	\advance\@tempcnta by #1\relax
    	\the\@tempcnta}
    \makeatother
    Mais à chaque essaye, quelque soit le test, le déroulement passe dans le else. Qu'est ce que je fais de mal?

    Merci de m'avoir lu, le sujet n'étant pas urgent, n'hésitez pas à répondre même dans plusieurs jours.
    Images attachées Images attachées
    Pour les messages utiles, mettre un pouce vert fait plaisir à celui qui donne de son temps pour aider. (en tout cas, ça me fait plaisir)

Discussions similaires

  1. Boucle pour améliorer mon code
    Par rossemma dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 25/02/2017, 21h13
  2. [XL-2007] Filtre et boucle - améliorer mon code svp, très long
    Par mouftie dans le forum Excel
    Réponses: 3
    Dernier message: 15/02/2014, 10h30
  3. améliorer mon code avec une boucle
    Par hotdogFRANCE dans le forum C#
    Réponses: 4
    Dernier message: 29/01/2011, 17h35
  4. [XL-2000] macro copier/coller tableau : amélioration du code
    Par Needz dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 02/11/2010, 16h23
  5. getElementsByTagName ('*') 2balises dans la boucle test ?
    Par Lareine dans le forum Général JavaScript
    Réponses: 26
    Dernier message: 01/11/2005, 19h29

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo