Stocker une valeur

Tout ce qui concerne le langage TeX/LaTeX et ses variantes. Ce langage est utilisable sur le forum via les balises tex.
[participation réservée aux utilisateurs inscrits]
Règles du forum
Merci de soigner la rédaction de vos messages et de consulter ce sujet avant de poster. Pensez également à utiliser la fonction recherche du forum.
stokastik

Stocker une valeur

Message non lu par stokastik »

Bonjour,

On peut faire des calculs avec LaTeX (par exemple avec le code PostScript {2 4 mul}, mais comment stocker le résultat du calcul dans une variable ?
P.Fradin

Re: Stocker une valeur

Message non lu par P.Fradin »

stokastik a écrit :Bonjour,

On peut faire des calculs avec LaTeX (par exemple avec le code PostScript {2 4 mul}, mais comment stocker le résultat du calcul dans une variable ?
En Postscript, on définit une variable a ainsi:

Code : Tout sélectionner

/a{2 4 mul}def
stokastik

Message non lu par stokastik »

Et en LaTeX ???

Autre question :
Y a-t-il moyen de définir une fonction et de l'évaluer au point qu'on veut ?
P.Fradin

Message non lu par P.Fradin »

stokastik a écrit :Et en LaTeX ???

Autre question :
Y a-t-il moyen de définir une fonction et de l'évaluer au point qu'on veut ?
En $\LaTeX$ je suppose qu'il faut utiliser des registres, pour des valeurs entières, sinon des registres de dimension, mais je ne l'ai jamais fait.

En postscript voici une fonction f d'une variable x ($x\sin(x)$):

Code : Tout sélectionner

/defvar{/x 2 -1 roll def}def
/f{defvar x dup sin mul}def
Utilisation (par exemple pour f(12)): 12 f

La macro defvar permet de lire la valeur qui précède f et la stocke dans une variable x, puis la macro f duplique x, calcule son sinus et le multiplie avec le x et donne le résultat (pour comprendre il faut savoir que postscript fonctionne avec une pile).
On peut même tracer directement la courbe en postscript (je n'ai pas fait de changement d'échelle!):

Code : Tout sélectionner

0 0 f moveto 0 36{10 add dup dup f lineto}repeat stroke
on part de (0,0) et on relie les points (x,f(x)) (36 fois en allant de 10 en 10).
stokastik

Message non lu par stokastik »

Merci pour ce petit cours de PostScript mais ça ne répond pas du tout à ma question.
P.Fradin

Message non lu par P.Fradin »

stokastik a écrit :Merci pour ce petit cours de PostScript mais ça ne répond pas du tout à ma question.
Ben...si quand même un peu! La réponse est: en postscript oui (c'est ce que fait d'ailleurs pstricks), en $LaTeX$ non, sinon pourquoi utiliser du postscript?
stokastik

Message non lu par stokastik »

C'est en LaTeX que je veux faire ça.
la main gauche

Message non lu par la main gauche »

TeX est une machine avec 246 registres (mémoires) numériques, 256 registres de listes de tokens (qui ont un comportement différent des macros, dont le nombre est virtuellement illmité), et d'autres registres pour les dimensions et le boîtes. En outre, il n'est pas très difficile de programmer un pile pour sauvegarder des nombres. Tout cela devrait tout à fait réjouir les gens qui ont déjà programmé un microprocesseur.

exemple de fonction pour TeX

Code : Tout sélectionner

\newcount\RA
\newcount\RB
\newcount\RC
\newcount\RD
% les quatres noms symboliques RA RB RC et RD désignent une mémoire numérique

% la fonction max écrit le maximum de RA et RB dans RC.
%  RA RB et RD ont leur contenus préservés
\def\max{% coiffeur pour dames
\RC=\RA
\advance\RC by -\RB
\ifnum\RC<0 \RC=-\RC\fi
\advance\RC by \RA
\advance\RC by \RB
\divide\RC by 2 }% attention à laisser l'espace ici

\RA=45 \RB=-11 \max
Le plus grand parmi \the\RA\ et \the\RB\ est \the\RC.
C'est vraiment aussi appétissant que de l'assembleur. En tout cas bien spécifier le comportemnt des fonctions (ie la façon dont elles modifient les registres). Pour n'importe quoi de compliqué une pile est certainement nécessaire (à moins d'être une adpete de consrcuctions avec *expandafter*).
Répondre
  • Sujets similaires
    Réponses
    Vues
    Dernier message