Comment dire à TikZ « fais ceci tant de fois » ?

Je prends l'exemple suivant — tiré de la doc :

\documentclass[tikz, border = 2 mm]{standalone}

\begin{document}

\begin{tikzpicture}
  \foreach \x in {0, 1, 2, 3}
    \draw (\x, 0) circle (0.2 cm) ;
\end{tikzpicture}

\end{document}

Jusqu'ici tout va bien : chaque itération en x correspond à un entier naturel, je peux donc calculer ça de tête.

Mais imaginons que j'aie besoin de 367 itérations d'un truc séparé du truc précédent par une distance moins calculable de tête, par exemple 0.10675 (ou un nombre irrationnel, hein : je ne suis pas regardant) ; pis je suis pressé, j'ai pas de calculette...

Comment dire à TikZ « dessine 367 trucs espacés de telle distance » sans calculer la distance totale ?

Posée 27 Avr, 16:38

Pathe's gravatar image

Pathe ♦♦
7.5k32199247
Taux d'acceptation : 55%

Modifiée 27 Avr, 16:40


Si on s'autorise à faire faire les calculs par tikz :

\documentclass[tikz, border = 2 mm]{standalone}
\usetikzlibrary{calc}
\begin{document}

\begin{tikzpicture}
  \foreach \x in {0, 1, ..., 367}
    {\draw ($(0.10675*\x, 0)$) circle (0.2 cm);}
\end{tikzpicture}

\end{document}
Lien permanent

Publiée 27 Avr, 16:51

nmarkey's gravatar image

nmarkey
1.4k29
Taux d'acceptation : 45%

Modifiée 27 Avr, 16:53

@nmarkey : voilà qui est frappé au coin du bon sens. Merci !

(27 Avr, 16:59) Pathe ♦♦ Pathe's gravatar image

Si vous voulez utiliser \x plusieurs fois :

\documentclass[tikz, border = 2 mm]{standalone}

\begin{document}

\begin{tikzpicture}
  \foreach \step [evaluate=\step as \x using \step*0.10675] in {1,...,367}{
    \draw (\x, 0) circle (0.2 cm);
  }
\end{tikzpicture}

\end{document}
Lien permanent

Publiée 27 Avr, 17:30

samcarter's gravatar image

samcarter
8.3k2817
Taux d'acceptation : 56%

Votre réponse
(dés)activer 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

Bases de Markdown

  • *italique* ou _italique_
  • **gras** ou __gras__
  • Lien ::[texte](http://url.com/ "Titre ")
  • Image : ?![alt texte](/path/img.jpg "Titre ")
  • Liste numérotée : 1. Foo 2. Bar
  • Pour ajouter un passage à la ligne, ajoutez deux espaces à l'endroit où vous souhaitez que la ligne commence.
  • Les balises HTML de base sont également prises en charge.