texte avec différentes couleurs
Pour toute demande d'aide pour la conception (ou la confirmation d'un code) d'une figure Asymptote, c'est ici.
J'invite ceux qui ont régulièrement des questions à poser à aller dans leur panneau de l'utilisateur pour indiquer dans la signature de leurs messages :
- Nom du système d'exploitation (W7 ou Ubuntu 12.04 ou ...)
- Version d'Asymptote et éditeur utilisé pour les figures Asymptote
- Distribution LaTeX et éditeur utilisé pour les tex.
On va gagner du temps dans les réponses !
texte avec différentes couleurs
Je voudrais écrire une phrase avec des mots de différentes couleurs du type mot1 mot2 etc... pour pouvoir l'afficher sur un graphe.
J'imaginais faire différents labels avec différentes couleurs, mais je ne sais pas comment placer chaque label de façon à ce que l'intervalle entre les mots soit constant.
Merci d'avance.
Re: texte avec différentes couleurs
Diane a écrit :Je voudrais écrire une phrase avec des mots de différentes couleurs du type mot1 mot2 etc... pour pouvoir l'afficher sur un graphe.
Un graphe... de la théorie des graphes ? Ou un autre type de graphique ? Avec un peu plus de précision sur l'ensemble, cela peut permettre d'affiner la réponse.
Je pense notamment à l'ensemble de ces mots... doit-il ensuite avoir une position particulière par rapport à un autre élément du graphique ?
Diane a écrit :je ne sais pas comment placer chaque label de façon à ce que l'intervalle entre les mots soit constant.
Y aura-t-il quelque chose de particulier à faire avec ces mots ensuite ? les relier à d'autres choses ?
L'espace constant entre ces mots doit-il s'adapter à quelque chose dans la figure ?
Je propose tout de même quelque chose si le texte n'a pas à dépendre de la position d'un autre élément de la figure :
*** Pour masquer/découvrir le code Asymptote qui a permis de créer la figure, il faut cliquer dessus. ;-) ***
- CODE ASYMPTOTE de la figure ci-dessus : Tout sélectionner
- size(5cm);
- texpreamble("
- \usepackage{xcolor}
- \newcommand{\bl}[1]{\textcolor{blue}{#1}}
- \newcommand{\ro}[1]{\textcolor{red}{#1}}
- \newcommand{\ve}[1]{\textcolor{green}{#1}}
- ");
- label("\bl{un} \ro{essai} \ve{concluant}",(0,0));
- label("\ro{un} \ve{essai} \bl{concluant}",(1,1));
Si c'est destiné à être une figure embarquée dans un tex, alors avec l'option [inline], la partie dans texpreamble peut-être déportée dans le préambule du tex.
Mes configurations (le 24/02/21) :
PC n°1 :Windows 10 - Asymptote(2.82)+MikTeX2.9 - Editeurs : Notepad++, TeXworks, Visual Studio Code.
PC n°2 : Ubuntu 20.04LTS - Asymptote(2.67-?? git) + TexLive2020
Mon serveur : Debian Stretch- Asymptote(2.68-16 git) + TexLive2018
Merci de préciser la votre !
Re: texte avec différentes couleurs
Je n'ai pas été très claire, je cherche à faire une sorte de schéma explicatif à partir d'une phrase, avec des mots de couleurs différentes (partie qui me posait problème), des cadres, des flèches... Donc vous avez bien répondu à mon problème, merci, "l'essai est concluant".
Je devrais m'en sortir pour l'instant.
Re: texte avec différentes couleurs
Ce serait incontestablement à revoir s'il faut donner de la souplesse pour avoir notamment un nombre variable de mots... et s'il y a d'autres choses sur la figure.
*** Pour masquer/découvrir le code Asymptote qui a permis de créer la figure, il faut cliquer dessus. ;-) ***
- CODE ASYMPTOTE de la figure ci-dessus : Tout sélectionner
- real marge=1mm;
- pair z1=(0,0);
- pair vectsep=2*E;
- object mot1 = align(object(Label(baseline("Un"),blue),box,marge),vectsep);
- add(mot1,z1);
- pair z2 = z1 + vectsep+realmult(unit(vectsep),size(mot1.f));
- object mot2 = align(object(Label(baseline("essai"),green),ellipse,marge),vectsep);
- add(mot2,z2);
- pair z3 = z2 + vectsep+realmult(unit(vectsep),size(mot2.f));
- object mot3 = align(object(Label(baseline("concluant"),red),roundbox,marge),vectsep);
- add(mot3,z3);
*** Pour masquer/découvrir le code Asymptote qui a permis de créer la figure, il faut cliquer dessus. ;-) ***
- CODE ASYMPTOTE de la figure ci-dessus : Tout sélectionner
- real marge=1mm;
- pair z1=(0,0);
- pair vectsep=20*E;
- object mot1 = align(object(Label(baseline("Un"),blue),box,marge),vectsep);
- add(mot1,z1);
- pair z2 = z1 + vectsep+realmult(unit(vectsep),size(mot1.f));
- object mot2 = align(object(Label(baseline("essai"),green),ellipse,marge),vectsep);
- add(mot2,z2);
- pair z3 = z2 + vectsep+realmult(unit(vectsep),size(mot2.f));
- object mot3 = align(object(Label(baseline("concluant"),red),roundbox,marge),vectsep);
- add(mot3,z3);
*** Pour masquer/découvrir le code Asymptote qui a permis de créer la figure, il faut cliquer dessus. ;-) ***
- CODE ASYMPTOTE de la figure ci-dessus : Tout sélectionner
- real marge1=1mm, marge2=20mm;
- pair z1=(0,0);
- pair vectsep=50*E;
- object mot1 = align(object(Label(baseline("Un"),blue),box),vectsep);
- add(mot1,z1);
- pair z2 = z1 + vectsep+realmult(unit(vectsep),size(mot1.f));
- object mot2 = align(object(Label(baseline("essai"),green),ellipse,marge1),vectsep);
- add(mot2,z2);
- pair z3 = z2 + vectsep+realmult(unit(vectsep),size(mot2.f));
- object mot3 = align(object(Label(baseline("concluant"),red),roundbox,marge2),vectsep);
- add(mot3,z3);
- draw(shift(z1)*point(mot1,S){S}..{N}shift(z2)*point(mot2,S),Arrow());
- draw(shift(z1)*point(mot1,N){NE}..{S}shift(z3)*point(mot3,N),Arrow());
*** Pour masquer/découvrir le code Asymptote qui a permis de créer la figure, il faut cliquer dessus. ;-) ***
- CODE ASYMPTOTE de la figure ci-dessus : Tout sélectionner
- real marge=2mm;
- pair z1=(0,0);
- pair vectsep=10*S;
- object mot1 = align(object(Label(baseline("Un"),blue),box,marge),vectsep);
- add(mot1,z1);
- pair z2 = z1 + vectsep+realmult(unit(vectsep),size(mot1.f));
- object mot2 = align(object(Label(baseline("essai"),green),ellipse,marge),vectsep);
- add(mot2,z2);
- pair z3 = z2 + vectsep+realmult(unit(vectsep),size(mot2.f));
- object mot3 = align(object(Label(baseline("concluant"),red),roundbox,marge),vectsep);
- add(mot3,z3);
- draw(shift(z1)*point(mot1,SW){W}..{E}shift(z2)*point(mot2,W),Arrow());
- draw(shift(z1)*point(mot1,E){E}..{SW}shift(z3)*point(mot3,NE),Arrow());
Mes configurations (le 24/02/21) :
PC n°1 :Windows 10 - Asymptote(2.82)+MikTeX2.9 - Editeurs : Notepad++, TeXworks, Visual Studio Code.
PC n°2 : Ubuntu 20.04LTS - Asymptote(2.67-?? git) + TexLive2020
Mon serveur : Debian Stretch- Asymptote(2.68-16 git) + TexLive2018
Merci de préciser la votre !
Re: texte avec différentes couleurs
Autrement dit, associer du texte avec une fonte standart et un mot, qui lui, serait en couleur, entouré, relié par une flêche.
Je dois pour l'instant réaliser un schéma général, dont on pourra par la suite adapter le contenu.
(J'espère être assez claire)
Re: texte avec différentes couleurs
*** Pour masquer/découvrir le code Asymptote qui a permis de créer la figure, il faut cliquer dessus. ;-) ***
- CODE ASYMPTOTE de la figure ci-dessus : Tout sélectionner
- real u=2cm;
- unitsize(u);
- // Liste des formes
- path p[] = {unitsquare,
- shift(2,.5)*scale(.5)*unitcircle,
- shift(3,0)*xscale(1.5)*unitsquare
- };
- draw(p);
- // Liste des chaines... qui vont être transformées en "object" avec des paramètres individuels
- string Smots[]={"carr\'e","rectangle","cercle","triangle"};
- object Omots[];
- envelope Emots[]={box,box,box,box};
- pen PSmots[]={blue,blue,red,blue};
- pen PEmots[]={invisible,invisible,blue,invisible};
- real marge=1mm;
- frame fr;
- pair z[]={(0,0)}, vectsep=2*E;
- for(int k=0; k<Smots.length; ++k){
- // "Push" (ajout à la fin) de chaque objet (avec alignement et mise en forme) à la liste des objets
- Omots.push(align(object(Label(baseline(Smots[k]),PSmots[k]),Emots[k],marge,PEmots[k]),vectsep));
- // On ajoute le dernier objet de la liste à la frame avec le "bon décalage".
- add(fr,Omots[k],z[k]);
- // On calcule le "bon décalage" de l'objet suivant qui tiendra compte des dimensions de l'objet courant.
- z.push( z[k] + vectsep + realmult(unit(vectsep),size(Omots[k].f)) );
- }
- pair posmots=(1,3);
- dot(posmots,red);
- add(fr,posmots);
- // Une fonction pour faciliter le tracé de plusieurs flèches
- void relier(int numpath, int numstring, pen stylo=currentpen, real m=.05){
- pair po1=(.5(min(p[numpath])+max(p[numpath])).x,max(p[numpath]).y+m), // point au dessus de la forme
- po2=shift(posmots+z[numstring]/u)*(point(Omots[numstring],S)/u); // point en dessous de la chaine
- draw(po1{N}..{N}po2,stylo,Arrow());
- }
- relier(0,0);
- relier(1,2,red);
- relier(2,1,gray+dashed);
Ces problèmes de frame et de labels ne sont pas simples : j'ai un peu beaucoup bricolé pour pouvoir faire l'exemple précédent, le temps de réaliser l'astuce des "/u".
Il était facile de placer les formes et les mots... mais pour avoir les flèches, c'était un peu chaud... et cela donne ce code pas si simple à comprendre.
*** Pour masquer/découvrir le code Asymptote qui a permis de créer la figure, il faut cliquer dessus. ;-) ***
- CODE ASYMPTOTE de la figure ci-dessus : Tout sélectionner
- real u=2cm;
- unitsize(u);
- // Liste des formes
- path p[] = {unitsquare,
- shift(2,1)*scale(.5)*unitcircle,
- shift(3,1)*xscale(1.5)*unitsquare
- };
- draw(p);
- // Liste des chaines... qui vont être transformées en "object" avec des paramètres individuels
- string Smots[]={"carr\'e","rectangle","cercle","triangle"};
- object Omots[];
- envelope Emots[]={box,box,box,box};
- pen PSmots[]={blue,blue,red,blue};
- pen PEmots[]={invisible,invisible,blue,invisible};
- real marge=1mm;
- frame fr;
- pair z[]={(0,0)}, vectsep=20*WSW;
- for(int k=0; k<Smots.length; ++k){
- // "Push" (ajout à la fin) de chaque objet (avec alignement et mise en forme) à la liste des objets
- Omots.push(align(object(Label(baseline(Smots[k]),PSmots[k]),Emots[k],marge,PEmots[k]),vectsep));
- // On ajoute le dernier objet de la liste à la frame avec le "bon décalage".
- add(fr,Omots[k],z[k]);
- // On calcule le "bon décalage" de l'objet suivant qui tiendra compte des dimensions de l'objet courant.
- z.push( z[k] + vectsep + realmult(unit(vectsep),size(Omots[k].f)) );
- }
- pair posmots=(1,4);
- dot(posmots,red);
- add(fr,posmots);
- // Une fonction pour faciliter le tracé de plusieurs flèches
- void relier(int numpath, int numstring, pen stylo=currentpen, real m=.05){
- pair po1=(.5(min(p[numpath])+max(p[numpath])).x,max(p[numpath]).y+m), // point au dessus de la forme
- po2=shift(posmots+z[numstring]/u)*(point(Omots[numstring],S)/u); // point en dessous de la chaine
- draw(po1{N}..{N}po2,stylo,Arrow());
- }
- relier(0,0);
- relier(1,2,red);
- relier(2,1,gray+dashed);
Mes configurations (le 24/02/21) :
PC n°1 :Windows 10 - Asymptote(2.82)+MikTeX2.9 - Editeurs : Notepad++, TeXworks, Visual Studio Code.
PC n°2 : Ubuntu 20.04LTS - Asymptote(2.67-?? git) + TexLive2020
Mon serveur : Debian Stretch- Asymptote(2.68-16 git) + TexLive2018
Merci de préciser la votre !