Chaînes de carctères...
2 participants
Page 1 sur 1
Chaînes de carctères...
Bonjour bonjour!!!
Je voudrais juste quelques précisions au sujet des chaînes de caractères dans TeXgraph.
Ca fait déjà pas mal de temps que j'utilise TeXgraph, mais je dois avouer que je ne maitrise toujours pas la manipulation des chaînes de caractère.
Par exemple, y a t-il moyen d'affecter une chaîne de caractère à une variable (par exemple $ch:="BigCap"). Si je ne me trompe pas, ca ne marche pas comme ca. Il faut passer par la macro chaine(), non?
Tu pourrais donner des précisions à ce sujet Patrick? (Je me souviens pas que le sujet ait été abordé auparavant : si c'est le cas, un lien vers le sujet en question fera l'affaire!!)
Autre question liée au chaine de carctères. Y a t-il moyen sous TeXgraph de générer des variables en boucle (Wow quel clarté!!! ) Bon : je décrypte ma question par un exemple.
Est-il possible par exemple de définir des variables M1, M2, ..., Mn par l'intermédiaire d'une boucle sans avoir à se taper la définition une par une des n variables. Autrement dit, au lieu de taper ceci :
(Je me sens un peu idiot de poser des questions aussi basiques!!! J'espère que les réponses à mes questions seront plus compliquées que je ne le pense : j'aurais l'air un peu moins con!!! )
Je voudrais juste quelques précisions au sujet des chaînes de caractères dans TeXgraph.
Ca fait déjà pas mal de temps que j'utilise TeXgraph, mais je dois avouer que je ne maitrise toujours pas la manipulation des chaînes de caractère.
Par exemple, y a t-il moyen d'affecter une chaîne de caractère à une variable (par exemple $ch:="BigCap"). Si je ne me trompe pas, ca ne marche pas comme ca. Il faut passer par la macro chaine(), non?
Tu pourrais donner des précisions à ce sujet Patrick? (Je me souviens pas que le sujet ait été abordé auparavant : si c'est le cas, un lien vers le sujet en question fera l'affaire!!)
Autre question liée au chaine de carctères. Y a t-il moyen sous TeXgraph de générer des variables en boucle (Wow quel clarté!!! ) Bon : je décrypte ma question par un exemple.
Est-il possible par exemple de définir des variables M1, M2, ..., Mn par l'intermédiaire d'une boucle sans avoir à se taper la définition une par une des n variables. Autrement dit, au lieu de taper ceci :
- Code:
$M1:=1,
$M2:=2,
$M3:=3,
$M4:=4,
< .../... >
$M129:=129
- Code:
for $k from 1 to 129 do
$M.k:=k
od
- Code:
for $k from 1 to 129 do
["M", k]:=k
od
(Je me sens un peu idiot de poser des questions aussi basiques!!! J'espère que les réponses à mes questions seront plus compliquées que je ne le pense : j'aurais l'air un peu moins con!!! )
Re: Chaînes de carctères...
Bonjour Alphonse,
Grande question que les chaines de caractères dans TeXgraph!
Pour la première question:
L'affection := est en fait un raccourci pour la commande Set( variable, valeur), et l'évaluation de la valeur est uniquement numérique, donc pas moyen de stocker une chaine par ce biais. En fait il est possible de créer des variables de type chaine en utilisant une macro, depuis la version 1.94 j'ai ajouté une commande qui fait ce travail:
cette macro définit la macro appelée nom et dont la commande est définie par l'expression, cela permet de stocker une chaine, si evaluer vaut 1 (valeur par défaut), l'expression est évaluée sous forme de chaine, sinon elle est recopiée telle quelle dans la macro.
Exemples:
SetStr(x, pi) va créer une macro appelée x et contenant la chaine "3.14159265358979",
SetStr(x, "pi") va créer une macro appelée x et contenant la chaine "pi"
SetStr(x, pi,0) va créer une macro appelée x et contenant l'expression pi
Remarque: le nom de la variable peut être aussi sous la forme: ["x", k], ce qui donnera le nom x1 pour k=1, etc
Voilà pour la création d'une variable chaine (=macro). Comment utiliser une telle variable? Deux moyens:
1) Avec la commande GetStr( nom ) qui va "évaluer" la macro nom sous forme de chaine de caractères et renvoyer son résultat (cette évaluation n'est donc pas uniquement numérique)
2) Avec l'opérateur @ qui est un raccourci, par exemple on peut écrire @x à la place de GetStr(x).
Remarque: une variable chaine étant une macro, elle peut avoir des arguments, essayer par exemple la commande suivante:
[SetStr( test, ["bonjour mon ami ",%1],0), Message( @test( "Alphonse")) ]
Deuxième question: création automatique de variables indexées.
Tu es tout proche de la solution, c'est facile avec la commande DefVar qui crée des variables globales:
Malheureusement on ne peut pas le faire aussi simplement pour des variables locales car la commende Set n'accepte pas la syntaxe ["M",k] comme nom (c'est une lacune, je vais voir si on peut arranger cela). Sinon on peut faire par exemple:
La commande Eval est bien pratique, elle permet d'évaluer une expression sous forme de chaine puis évalue cette chaine comme si c'était une instruction TeXgraph, et renvoie le résultat (numérique).
Ps: les chaines ne sont donc pas si simples...
Grande question que les chaines de caractères dans TeXgraph!
Pour la première question:
L'affection := est en fait un raccourci pour la commande Set( variable, valeur), et l'évaluation de la valeur est uniquement numérique, donc pas moyen de stocker une chaine par ce biais. En fait il est possible de créer des variables de type chaine en utilisant une macro, depuis la version 1.94 j'ai ajouté une commande qui fait ce travail:
SetStr(nom, expression [, evaluer])
cette macro définit la macro appelée nom et dont la commande est définie par l'expression, cela permet de stocker une chaine, si evaluer vaut 1 (valeur par défaut), l'expression est évaluée sous forme de chaine, sinon elle est recopiée telle quelle dans la macro.
Exemples:
SetStr(x, pi) va créer une macro appelée x et contenant la chaine "3.14159265358979",
SetStr(x, "pi") va créer une macro appelée x et contenant la chaine "pi"
SetStr(x, pi,0) va créer une macro appelée x et contenant l'expression pi
Remarque: le nom de la variable peut être aussi sous la forme: ["x", k], ce qui donnera le nom x1 pour k=1, etc
Voilà pour la création d'une variable chaine (=macro). Comment utiliser une telle variable? Deux moyens:
1) Avec la commande GetStr( nom ) qui va "évaluer" la macro nom sous forme de chaine de caractères et renvoyer son résultat (cette évaluation n'est donc pas uniquement numérique)
2) Avec l'opérateur @ qui est un raccourci, par exemple on peut écrire @x à la place de GetStr(x).
Remarque: une variable chaine étant une macro, elle peut avoir des arguments, essayer par exemple la commande suivante:
[SetStr( test, ["bonjour mon ami ",%1],0), Message( @test( "Alphonse")) ]
Deuxième question: création automatique de variables indexées.
Tu es tout proche de la solution, c'est facile avec la commande DefVar qui crée des variables globales:
- Code:
for k from 1 to 129 do DefVar( ["M",k], k) od
Malheureusement on ne peut pas le faire aussi simplement pour des variables locales car la commende Set n'accepte pas la syntaxe ["M",k] comme nom (c'est une lacune, je vais voir si on peut arranger cela). Sinon on peut faire par exemple:
- Code:
for k from 1 to 129 do Eval( ["x",k, ":=", k]) od,
k:=Rand(139), Message( Eval([ "x", k+1] ))
La commande Eval est bien pratique, elle permet d'évaluer une expression sous forme de chaine puis évalue cette chaine comme si c'était une instruction TeXgraph, et renvoie le résultat (numérique).
Ps: les chaines ne sont donc pas si simples...
Re: Chaînes de carctères...
Et oui Patrick!!! Ce n'est pas si simple que ca (Ooouf! )
En tout cas, merci pour toutes ces précisions. J'y vois bien plus clair à présent...
En tout cas, merci pour toutes ces précisions. J'y vois bien plus clair à présent...
Re: Chaînes de carctères...
J'ai testé ces manipulations de chaînes de caractères : ca marche, mais y a un truc qui ne fonctionne pas, et je ne sais pas d'où vient le problème.
Le problème intervient lorsque je veux afficher un label Label(1+i, GetStr(label)) ou label est ma "macro-chaine". Quand je fais ca, rien ne s'affiche!!!
Comment ca se fait?
Tiens? C'est curieux!!! Je viens de réessayer sur un autre ordi et là ca marche!!! Je comprends pas!!!
Sinon, j'ai un autre problème (problème de codage de fontes) : les caractères é, è, ou tout autre symbole "exotique" (notament les lettres accentuées) sont remplacées par des "?". Comment je fais pour corriger le tir?
Le problème intervient lorsque je veux afficher un label Label(1+i, GetStr(label)) ou label est ma "macro-chaine". Quand je fais ca, rien ne s'affiche!!!
Comment ca se fait?
Tiens? C'est curieux!!! Je viens de réessayer sur un autre ordi et là ca marche!!! Je comprends pas!!!
Sinon, j'ai un autre problème (problème de codage de fontes) : les caractères é, è, ou tout autre symbole "exotique" (notament les lettres accentuées) sont remplacées par des "?". Comment je fais pour corriger le tir?
Re: Chaînes de carctères...
Salut Alphonse,
C'est curieux, chez moi ce code:
fonctionne parfaitement.
C'est curieux, chez moi ce code:
- Code:
[
SetStr(label, "Alphonse"),
Label(1+i, GetStr(label))
]
fonctionne parfaitement.
Re: Chaînes de carctères...
Oooops! Je pense que j'ai édité mon précédent message quand tu répondais!!
J'ai réessayé sur une autre machine et là, pas de problème! Je vais réessayer chez moi pour voir ce qui cloche.
Concernant le problème de fontes, T'as une solution?
J'ai réessayé sur une autre machine et là, pas de problème! Je vais réessayer chez moi pour voir ce qui cloche.
Concernant le problème de fontes, T'as une solution?
Re: Chaînes de carctères...
Alphonse Capriani a écrit:
Sinon, j'ai un autre problème (problème de codage de fontes) : les caractères é, è, ou tout autre symbole "exotique" (notament les lettres accentuées) sont remplacées par des "?". Comment je fais pour corriger le tir?
C'est trop vague. Où sont-ils remplacès par des "?", dans l'interface graphique?, dans les fichiers exportés? dans l'aperçu?
N'oublie pas que depuis la version 1.94, TeXgraph travaille en utf8, TeXmaker gère parfaitement cela (il faut paramètrer TeXmaker pour ça), Notepad++ le gère aussi et permet le transcodage.
Re: Chaînes de carctères...
Ooops! Désolé pour ce manque de précision.
En fait c'est dans TeXgraph que j'ai ce souci.
En fait, je suis en train de finir les modifications de PolyedresII.mac. J'ai pensé qu'une macro PolyNames(<Type>, <Numero>) permettant de renvoyer le nom du polyèdre en question pour , par exemple, être ensuite utilisé avec la commande Label, pourrait être utiles. Le problème, c'est que les accents présent dans le fichier *.mac ne passent pas sous texgraph (j'ai pas essayé après export, mais ca doit pa marcher!)
Tu vois ce que je veux dire?
En fait c'est dans TeXgraph que j'ai ce souci.
En fait, je suis en train de finir les modifications de PolyedresII.mac. J'ai pensé qu'une macro PolyNames(<Type>, <Numero>) permettant de renvoyer le nom du polyèdre en question pour , par exemple, être ensuite utilisé avec la commande Label, pourrait être utiles. Le problème, c'est que les accents présent dans le fichier *.mac ne passent pas sous texgraph (j'ai pas essayé après export, mais ca doit pa marcher!)
Tu vois ce que je veux dire?
Re: Chaînes de carctères...
Alphonse Capriani a écrit: Le problème, c'est que les accents présent dans le fichier *.mac ne passent pas sous texgraph
Parce que ton fichier n'est pas en utf8, tout smplement. Demande à ton éditeur de textes de l'enregistrer en utf8 et le problème sera résolu.
Re: Chaînes de carctères...
C'est bizarre parce que j'ai fais la manip et ca n'a pas marché...
Il suffit simplement de changer l'encodage du document en cours et de l'enregistrer comme ca, non?
Bon! Je réessaie ce soir et si ca marche pas, je passe à Asymptote!!! Non je rigole...
(Au fait? T'as pas des nouvelles de Samuel? Ca fait une éternité qu'on a aucune nouvelles. Pour lui, on est en droit de se demander s'il n'est vraiment pas passer à Asymptote!!! )
Il suffit simplement de changer l'encodage du document en cours et de l'enregistrer comme ca, non?
Bon! Je réessaie ce soir et si ca marche pas, je passe à Asymptote!!! Non je rigole...
(Au fait? T'as pas des nouvelles de Samuel? Ca fait une éternité qu'on a aucune nouvelles. Pour lui, on est en droit de se demander s'il n'est vraiment pas passer à Asymptote!!! )
Re: Chaînes de carctères...
Alphonse Capriani a écrit:
Il suffit simplement de changer l'encodage du document en cours et de l'enregistrer comme ca, non?
Tu utilises quoi?
Au fait? T'as pas des nouvelles de Samuel? Ca fait une éternité qu'on a aucune nouvelles.
J'ai eu un message il y a quelques semaines, il m'a dit qu'il vient de temps en temps sur le forum, mais ce doit être en anonyme je pense, car sa dernière connexion date du 1er février.
Re: Chaînes de carctères...
Notepad++.P.Fradin a écrit:Tu utilises quoi?
Ouais! Tous le monde est overbooké ces dernier temps!!P.Fradin a écrit:J'ai eu un message il y a quelques semaines, il m'a dit qu'il vient de temps en temps sur le forum, mais ce doit être en anonyme je pense, car sa dernière connexion date du 1er février.
Re: Chaînes de carctères...
Alphonse Capriani a écrit:
Notepad++.
Bon, ben menu Format/Convertir en utf8 suivi d'enregistrer devrait le faire non?
Re: Chaînes de carctères...
Ben c'est exactement ce que j'ai fait hier soir, mais sans succès!!!
Je suis pas à l'abri d'avoir fait une fausse manip, donc je vais réitérer la procédure ce soir : je te tiens au courant demain...
Sinon, j'arrive à la fin de mes modifs concernant PolyedresII.mac. Je vais essayer de poster la nouvelle version la semaine prochaine...
Je suis pas à l'abri d'avoir fait une fausse manip, donc je vais réitérer la procédure ce soir : je te tiens au courant demain...
Sinon, j'arrive à la fin de mes modifs concernant PolyedresII.mac. Je vais essayer de poster la nouvelle version la semaine prochaine...
Re: Chaînes de carctères...
Alphonse Capriani a écrit:Ben c'est exactement ce que j'ai fait hier soir, mais sans succès!!!
Je suis pas à l'abri d'avoir fait une fausse manip, donc je vais réitérer la procédure ce soir : je te tiens au courant demain...
Il me semble que "demain" c'est aujourd'hui, alors??
Re: Chaînes de carctères...
Ouais! Je crois même que demain, c'était hier
En fait j'ai refait le test hier soir et j'ai toujours un souci! J'ai fais quelques copie d'écran pour expliquer ce qu'il se passe.
Quand je passe en format UTF8, les caractères accentués sont remplacés par des rectangles noirs numérotés E8, E9, ...
Et quand je charge le fichier en question (fichier de macros), j'ai ce message :
J'ai aussi remarqué il y a quelque temps (peut être quand tu es passé au format UTF8) que les fichiers de macros sous TeXgraph n'était plus fais de la même manière.
Avant, on avait des déclaration du type :
En fait j'ai refait le test hier soir et j'ai toujours un souci! J'ai fais quelques copie d'écran pour expliquer ce qu'il se passe.
Quand je passe en format UTF8, les caractères accentués sont remplacés par des rectangles noirs numérotés E8, E9, ...
Et quand je charge le fichier en question (fichier de macros), j'ai ce message :
J'ai aussi remarqué il y a quelque temps (peut être quand tu es passé au format UTF8) que les fichiers de macros sous TeXgraph n'était plus fais de la même manière.
Avant, on avait des déclaration du type :
- Code:
16#MaMacro#{Hé hé...}
[
bla bla bla bla
]##
- Code:
Mac
MaMacro={hé hé}
[
bla bla bla bla
];
Re: Chaînes de carctères...
Alphonse Capriani a écrit:
Quand je passe en format UTF8, les caractères accentués sont remplacés par des rectangles noirs numérotés E8, E9, ...
Ce n'est pas normal. Mais là ça ne vient pas de TeXgraph
Et quand je charge le fichier en question (fichier de macros), j'ai ce message :
Là c'est normal, TeXgraph lit en utf8.
J'ai aussi remarqué il y a quelque temps (peut être quand tu es passé au format UTF8) que les fichiers de macros sous TeXgraph n'était plus fais de la même manière.
Avant, on avait des déclaration du type :et maintenant, on a un fichier du genre :
- Code:
16#MaMacro#{Hé hé...}
[
bla bla bla bla
]##Pourquoi un tel changement? Mon problème vient de là?
- Code:
Mac
MaMacro={hé hé}
[
bla bla bla bla
];
Les deux formats sont valables, cela date de la première version 1.94! Le deuxième format est le futur format source, bien plus lisible.
Envoie-moi le fichier qui pose problème.
Re: Chaînes de carctères...
Je l'ai pas sous la main.
Je poste ca la semaine prochaine (mardi au plus tot)
Je poste ca la semaine prochaine (mardi au plus tot)
Page 1 sur 1
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum
|
|