Re: matematica e tikz

#93376
Up
0
Down
::

marchetto” post=92992Buonasera,

ho un problemino con [tt]tikz[/tt] che, sarà la stanchezza, non riesco a risolvere:
Ho due cicli for ([tt]foreach[/tt]) uno dentro l’altro. Quello interno deve far scorre la variabile da 1 fino a un valore che dipende dalla variabile del ciclo esterno. Il problema è che così`\foreach \j in {1,…,5} {%
\foreach \i in {1,…,2^(\j+1)} {%

}
}`non funziona e mi da errore perché [tt]tikz[/tt] non permette di fare conti nell’assegnazione del valore di [tt]\i[/tt].
Una soluzione che ho pensato ma che non so mettere in pratica è quella di dichiarare una nuova variabile con un certo valore, per esempio`\foreach \j in {1,…,5} {%
\k = 2^(\j+1)
\foreach \i in {1,…,\k} {%

}
}`
Ma non ho trovato la sintassi da utilizzare e poi temo che anche inserendo [tt]\k[/tt] in [tt]\foreach \i in {1,…,\k}[/tt] otterrei degli errori.

Avete qualche idea?

Ciao
Marco

Ci sei quasi.

TikZ per via di LaTeX non può definire delle variabili con una sintassi simile ad altri linguaggi di programmazione. Il modo corretto è:`
\pgfmathsetmacro\k{2^(\j+1)}
`Quindi: `
\documentclass[tikz]{standalone}

\begin{document}
\begin{tikzpicture}
\foreach \j in {1,…,5} {%
\pgfmathsetmacro\k{2^(\j+1)}
\foreach \i in {1,…,\k} {%
\node[fill] at (\i,\j){};
}
}
\end{tikzpicture}
\end{document}
` funziona alla grande. In modo più elegante, puoi ridefinire anche il primo ciclo con: `
\foreach \j [evaluate=\j as \k using 2^(\j+1)] in {1,…,5} {%
`

Ciao
Claudio

Go to top