Definizione ricorsiva

  • Creatore
    Topic
  • #97430
    Up
    0
    Down
    ::


    vorrei sapere se è possibile utilizzare l’istruzione \def chiamando nella definizione la stessa variabile che si sta definendo.
    Il problema nasce dal tentativo di scrivere un codice di questo tipo:

    `\documentclass{article}
    \usepackage{tikz}
    \begin{document}
    \begin{tikzpicture}[ultra thick,scale=1]
    \def \x{0}
    \def\y{0}
    \foreach \col in {black,red,blue}
    {
    \draw[\col] (\x,\y)– ++(2,0) ;
    \def \x{\x+2}
    }
    \end{tikzpicture}
    \end{document}
    `
    che dovrebbe tracciare un segmento fatto da tre tratti successivi di colore diverso. Ma l’ultima istruzione del ciclo non produce alcun effetto. C’è forse un altro modo per ottenere lo stesso risultato?

Visualizzazione 4 filoni di risposte
  • Autore
    Risposte
    • #97431
      OldClaudio
      Partecipante
        Up
        0
        Down
        ::


        Vuoi aumentare il valore di \x di due unità ad ogni giro? non è certamente quello il modo di farlo; non ho capito bene quello che voi fare, ma con \edef e una espresione aritmetica nella definizione, forse, e sottolineo forse, si può fare.
        Non uso TiKz correntemente come altri espertissimi utenti, am mi pare che esistano altri modi di incrementare la variabile nei cicli \for.

      • #97432
        Up
        0
        Down
        ::

        eminova” post=96875vorrei sapere se è possibile utilizzare l’istruzione \def chiamando nella definizione la stessa variabile che si sta definendo.
        Il problema nasce dal tentativo di scrivere un codice di questo tipo:

        `\documentclass{article}
        \usepackage{tikz}
        \begin{document}
        \begin{tikzpicture}[ultra thick,scale=1]
        \def \x{0}
        \def\y{0}
        \foreach \col in {black,red,blue}
        {
        \draw[\col] (\x,\y)– ++(2,0) ;
        \def \x{\x+2}
        }
        \end{tikzpicture}
        \end{document}
        `
        che dovrebbe tracciare un segmento fatto da tre tratti successivi di colore diverso. Ma l’ultima istruzione del ciclo non produce alcun effetto. C’è forse un altro modo per ottenere lo stesso risultato?

        Si, definisci \x con il costrutto evaluate!

        Ciao
        Claudio

      • #97433
        Up
        0
        Down
        ::


        non lo conosco 🙁
        Qual’è la sintassi e dove trovo una documentazione?

      • #97434
        Up
        0
        Down
        ::

        eminova” post=96887non lo conosco 🙁
        Qual’è la sintassi e dove trovo una documentazione?

        Ovviamente nella documentazione di TikZ, quando si analizza il pacchetto pgffor. Quindi, ammesso di avere interpretato correttamente cosa avevi in mente: `
        \documentclass{article}
        \usepackage{tikz}
        \begin{document}
        \begin{tikzpicture}[ultra thick,scale=1]
        \def \x{0}
        \def\y{0}
        \foreach \col[count=\xi,evaluate=\xi as \x using int(2*\xi) ] in {black,red,blue}
        {
        \draw[\col] (\x,\y)– ++(2,0) ;
        }
        \end{tikzpicture}
        \end{document}
        `
        Ciao
        Claudio

      • #97435
        Up
        0
        Down
        ::


        Perfetto !!!
        Funziona proprio come avevo in mente.
        Ora cerco la documentazione..
        grazie !
        Emilio

    Visualizzazione 4 filoni di risposte
    • Devi essere connesso per rispondere a questo topic.

    Go to top