Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

fonction à 10 arguments interactive

1 réponse
Avatar
Guillaume
Bonjour,
pour cr=E9er un arbre 2*2 en metapost, j'ai essay=E9 de cr=E9er une
fonction elisp, mais je ne suis pas vraiment au point.
Je ne comprends pas trop les arguments =E0 mettre dans interactive.

J'ai essay=E9 =E7a et =E7a marche pas. Je voudrais que l'utilisateur
rentre les 10 arguments et que le code metapost soit affich=E9.



;;;;;;;;;;;;;;;;;;;;;


(defun meta-insert-matrix (A B C Dd E F pa pb pc pd pe pf)
(interactive "nA : nB : nC : nDd : nE : nF :
npa : npb : npc : npd : npe : npf : ")
(insert "
input /home/moi/Figures/Arbres_Graphes/rboxes;
input metaobj;
input newcourbes;
input TEX;

verbatimtex
%&latex
\documentclass[fourier]{Polymaths}
\begin{document}

etex


beginfig(1)
setCurveDefaultOption("arrows")("draw");
setObjectDefaultOption("Tree")("treemode")("D");
setObjectDefaultOption("Tree")("vsep")(2cm);
setObjectDefaultOption("Circle")("fillcolor")(blue);
t[1]:=3D_T(Tcircle_(btex E etex) )(Tcircle_(btex A etex),Tcircle_(btex
B etex));
t[2]:=3D_T(Tcircle_(btex F etex) )(Tcircle_(btex C etex),Tcircle_(btex
Dd etex));
t:=3D_T(TC)(t[1],t[2]);

Obj(t).c=3Dorigin;



ObjLabel.Obj(t)(btex \small$ pe$ etex) "labpathid(1)",
"labdir(lft)","labcolor(blue)";
ObjLabel.Obj(t)(btex \small$ pf$ etex) "labpathid(2)",
"labdir(rt)","labcolor(blue)";
ObjLabel.Obj(t[1])(btex \small$ pa$ etex) "labpathid(1)",
"labdir(lft)","labcolor(blue)";
ObjLabel.Obj(t[1])(btex \small$ pb$ etex) "labpathid(2)",
"labdir(rt)","labcolor(blue)";
ObjLabel.Obj(t[2])(btex \small$ pc$ etex) "labpathid(1)",
"labdir(lft)","labcolor(blue)";
ObjLabel.Obj(t[2])(btex \small$ pd$ etex) "labpathid(2)",
"labdir(rt)","labcolor(blue)";
=20

draw_Obj(t);=20
endfig;
end
"))

;;;;;;;;;;;;;;;;;;;;;

1 réponse

Avatar
Ph. Ivaldi
Le 25 novembre 2006 à 13h10:46,
"Guillaume" écrivit :

Bonjour,



Bonjour,

pour créer un arbre 2*2 en metapost, j'ai essayé de créer une
fonction elisp, mais je ne suis pas vraiment au point.
Je ne comprends pas trop les arguments à mettre dans interactive.

J'ai essayé ça et ça marche pas. Je voudrais que l'utilisateur
rentre les 10 arguments et que le code metapost soit affiché.

;;;;;;;;;;;;;;;;;;;;;

(defun meta-insert-matrix (A B C Dd E F pa pb pc pd pe pf)
(interactive "nA : nB : nC : nDd : nE : nF :
npa : npb : npc : npd : npe : npf : ")



Pour lire plusieurs arguments il faut les séparer par un retour chariot,
habituellement n.

[...]
t[1]:=_T(Tcircle_(btex E etex) )(Tcircle_(btex A etex),Tcircle_(btex


^^^^^
Elisp ne peut pas savoir que "A" est le paramètre, il faut utiliser une
fonction de conversion, par exemple "format".

[...]



Voici ce que je te propose:

(defun meta-insert-matrix (A B C Dd E F pa pb pc pd pe pf)
(interactive "nA : nnB : nnC : nnDd : nnE : nnF : nnpa : nnpb : nnpc : nnpd : nnpe : nnpf : ")
(insert (format
"input /home/moi/Figures/Arbres_Graphes/rboxes;
input metaobj;
input newcourbes;
input TEX;

verbatimtex
%%&latex
documentclass[fourier]{Polymaths}
begin{document}

etex

beginfig(1)
setCurveDefaultOption("arrows")("draw");
setObjectDefaultOption("Tree")("treemode")("D");
setObjectDefaultOption("Tree")("vsep")(2cm);
setObjectDefaultOption("Circle")("fillcolor")(blue);
t[1]:=_T(Tcircle_(btex %s etex) )(Tcircle_(btex %s etex),Tcircle_(btex
%s etex));
t[2]:=_T(Tcircle_(btex %s etex) )(Tcircle_(btex %s etex),Tcircle_(btex
%s etex));
t:=_T(TC)(t[1],t[2]);

Obj(t).c=origin;

ObjLabel.Obj(t)(btex small$ %s$ etex) "labpathid(1)",
"labdir(lft)","labcolor(blue)";
ObjLabel.Obj(t)(btex small$ %s$ etex) "labpathid(2)",
"labdir(rt)","labcolor(blue)";
ObjLabel.Obj(t[1])(btex small$ %s$ etex) "labpathid(1)",
"labdir(lft)","labcolor(blue)";
ObjLabel.Obj(t[1])(btex small$ %s$ etex) "labpathid(2)",
"labdir(rt)","labcolor(blue)";
ObjLabel.Obj(t[2])(btex small$ %s$ etex) "labpathid(1)",
"labdir(lft)","labcolor(blue)";
ObjLabel.Obj(t[2])(btex small$ %s$ etex) "labpathid(2)",
"labdir(rt)","labcolor(blue)";

draw_Obj(t);
endfig;
end
" E A B F C Dd pe pf pa pb pc pd)))

--
Philippe Ivaldi.
http://home.tele2.fr/phivaldi/index.html