J'ai écrit une boucle \foreach que je voudrais pouvoir réutiliser en modifiant uniquement la variable de dimension, que j'ai appelée \longueur.

Sans cette variable en utilisant en lieu et place la valeur 4, cela fonctionne bien :

Ouvrir dans l'éditeur Overleaf
[evaluate=\x as \xx using
{\x\*(4\*.347296355)}]
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

et il apparaît bien l'image ci-dessous :

... mais lorsque je remplace la valeur 4 par la variable \longueur, qui mesure 4 cm, avec ce code :

Ouvrir dans l'éditeur Overleaf
[evaluate=\x as \xx using
{\x\*(\longueur\*.347296355)}]
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

... cela ne fonctionne plus et j'obtiens cette image :

alt text

L'ECM qui fonctionne est celui-ci :

Ouvrir dans l'éditeur Overleaf
\documentclass[a4paper, 11pt,landscape]{article}
\usepackage{tikz}
\usepackage[frenchb]{babel}
\begin{document}
\newlength{\longueur}
\setlength{\longueur}{4cm}
\begin{tikzpicture}
\clip (0,0) rectangle({\longueur*3.125667198},{\longueur*.984807753});
\foreach \x [evaluate=\x as \xx using {\x*(4*.347296355)}] in {0,1,...,9}{
\draw (\xx,0)--++(80:\longueur);
\draw(\xx,0)--++(100:\longueur);
}
\draw (0,0) rectangle({\longueur*3.125667198},{\longueur*.984807753});
\end{tikzpicture}
\end{document}
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

L'ECM qui ne fonctionne pas est celui-là :

Ouvrir dans l'éditeur Overleaf
\documentclass[a4paper, 11pt,landscape]{article}
\usepackage{tikz}
\usepackage[frenchb]{babel}
\begin{document}
\newlength{\longueur}
\setlength{\longueur}{4cm}
\begin{tikzpicture}
\clip (0,0) rectangle({\longueur*3.125667198},{\longueur*.984807753});
\foreach \x [evaluate=\x as \xx using {\x*(\longueur*.347296355)}] in {0,1,...,9}{
\draw (\xx,0)--++(80:\longueur);
\draw(\xx,0)--++(100:\longueur);
}
\draw (0,0) rectangle({\longueur*3.125667198},{\longueur*.984807753});
\end{tikzpicture}
\end{document}
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Comment faire pour utiliser une variable de dimension dans l'evaluate de la boucle foreach ?

Posée 20 Mai '17, 20:59

Andr%C3%A9C's gravatar image

AndréC
61131124
Taux d'acceptation : 25%

Modifiée 10 Aoû '17, 17:13

Pathe's gravatar image

Pathe ♦♦
7.5k49207252

1

Il suffit de remplacer \newlength{\longueur} \setlength{\longueur}{4cm} par \newcommand*\longueur{4}

(20 Mai '17, 23:35) touhami touhami's gravatar image

Parfait ! merci beaucoup !

(21 Mai '17, 10:56) AndréC Andr%C3%A9C's gravatar image

@touhami Une question : j'avais tenté de remplacer les longueurs avec \def\longueur{4} sans succès, pourquoi cela ne fonctionne t-il pas avec \def mais fonctionne avec \newcommand ?

(22 Mai '17, 23:24) AndréC Andr%C3%A9C's gravatar image

@AndréC Pour moi ça marche.

(23 Mai '17, 00:12) touhami touhami's gravatar image

Vous avez raison ça marche, en fait j'avais remplacé par \def\longueur{4cm} et non pas par \def\longueur{4} et c'est ce problème de conversion de longueur qui s'est posé.

(23 Mai '17, 00:15) AndréC Andr%C3%A9C's gravatar image

TeX convertit les longueurs en pt donc 4 cm = \longueur = 113.81102 pt.

Lors de l'évaluation, c'est cette valeur qui est utilisée, i.e. 113.81102.

Une solution est d'utiliser \longueur/1cm* qui est 113.81102 pt / 28.45274 pt = (4).

Ouvrir dans l'éditeur Overleaf
\documentclass[a4paper, 11pt,landscape]{article}
\usepackage{tikz}
\usepackage[frenchb]{babel}
\begin{document}
\newlength{\longueur}
\setlength{\longueur}{4cm}
\begin{tikzpicture}
\clip (0,0) rectangle({\longueur*3.125667198},{\longueur*.984807753});
\foreach \x [evaluate=\x as \xx using {\x*(\longueur/1cm*.347296355)}] in {0,1,...,9}{
\draw (\xx,0)--++(80:\longueur);
\draw(\xx,0)--++(100:\longueur);
}
\draw (0,0) rectangle({\longueur*3.125667198},{\longueur*.984807753});
\end{tikzpicture}
\end{document}
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Lien permanent

Publiée 21 Mai '17, 00:42

touhami's gravatar image

touhami
9.8k410
Taux d'acceptation : 51%

Modifiée 10 Aoû '17, 17:17

Pathe's gravatar image

Pathe ♦♦
7.5k49207252

@touhami Merci beaucoup, vos deux solutions fonctionnent parfaitement.

(21 Mai '17, 11:00) AndréC Andr%C3%A9C's gravatar image

@AndréC n'oubliez pas d'accepter la réponse si elle convient.

(26 Mai '17, 00:22) pluton pluton's gravatar image
Votre réponse
[Masquer l'aperçu]

Suivre cette question

Par courriel :

Une fois que vous serez enregistré, vous pourrez souscrire à n'importe quelle mise à jour ici

Par flux RSS :

Réponses

Réponses et commentaires

Mots-clés de la question :

×109
×4
×4
×1

Question posée : 20 Mai '17, 20:59

Question vue : 6,735 fois

Dernière mise à jour : 01 Jul '17, 01:42

C'est votre première visite ici ? Consultez la FAQ !

×