Script per TikZ

  • Creatore
    Topic
  • #73531
    Up
    0
    Down
    ::


    Ciao a tutti,

    come potete leggere (se avete voglia :)) in questa discussione, per disegnare le spline con [tt]TikZ[/tt] mi appoggio al programma TpX. Questo mi fornisce un elenco di coordinate dei punti delle spline di Bézier, in questo modo:

    A,B C,D E,F G,H I,L M,N O,P…

    dove A, …, H sono numeri. Le coppie di coordinate sono separate quindi da uno spazio, e le due coordinate di ciascun punto, da una virgola. Se fosse possibile, mi piacerebbe scrivere uno script per Windows che apra questo file txt, e compili un altro file txt, come segue:

    1. Legga “A” e “B” dal primo file, e scriva [tt]\pgfpathmoveto{\pgfpoint{Acm}{Bcm}}[/tt] nella prima riga del secondo file;
    2. Legga a gruppi di sei le coordinate che seguono, e per ognuno d’essi scriva una riga come questa: [tt]\pgfpathcurveto{\pgfpoint{Ccm}{Dcm}}{\pgfpoint{Ecm}{Fcm}}{\pgfpoint{Gcm}{Hcm}}[/tt] (per il primo gruppo di sei coordinate in questo esempio).

    È possibile far questo?

    Grazie mille e ciao,
    Marco.

Visualizzazione 4 filoni di risposte
  • Autore
    Risposte
    • #73532
      robitex
      Amministratore del forum
        Up
        0
        Down
        ::

        Marco87″ post=72641Ciao a tutti,

        come potete leggere (se avete voglia :)) in questa discussione, per disegnare le spline con [tt]TikZ[/tt] mi appoggio al programma TpX. Questo mi fornisce un elenco di coordinate dei punti delle spline di Bézier, in questo modo:

        A,B C,D E,F G,H I,L M,N O,P…

        dove A, …, H sono numeri. Le coppie di coordinate sono separate quindi da uno spazio, e le due coordinate di ciascun punto, da una virgola. Se fosse possibile, mi piacerebbe scrivere uno script per Windows che apra questo file txt, e compili un altro file txt, come segue:

        1. Legga “A” e “B” dal primo file, e scriva [tt]\pgfpathmoveto{\pgfpoint{Acm}{Bcm}}[/tt] nella prima riga del secondo file;
        2. Legga a gruppi di sei le coordinate che seguono, e per ognuno d’essi scriva una riga come questa: [tt]\pgfpathcurveto{\pgfpoint{Ccm}{Dcm}}{\pgfpoint{Ecm}{Fcm}}{\pgfpoint{Gcm}{Hcm}}[/tt] (per il primo gruppo di sei coordinate in questo esempio).

        È possibile far questo?

        Grazie mille e ciao,
        Marco.

        La soluzione che adotterei è creare il codice TikZ corrispondente elaborando i dati racchiusi in un file con Lua o Python, piuttosto che fare il parsing degli argomenti con TeX.
        Ciao
        R.

      • #73533
        OldClaudio
        Partecipante
          Up
          0
          Down
          ::


          In realtà Lua o python sono efficientissimi e possono fare un lavoro eccelso, ma anche TeX è in grado di separare la prima coppia di coordinate dalle seguenti, di separare le seguenti coppie di coordinate, iterativamente fino alla fine dalla lista, e poi chiudere tutta l’operazione che esegue lo stroking del path.

          Basta usare i comandi delimitati (anche lo spazio è un delimitatore); ho scritto apposta un articolo su Ars apposta per introdurre alla definizione dei comandi con argomenti delimitati. Ovviamente se ne parla anche negli Appunti di programmazione in TeX e LaTeX di Enrico.

          Io, che non conosco né Lua né python non avrei dubbi; ma riconosco che imparare quei linguaggi, almeno Lua, permette di avere diverse marce in più.

        • #73534
          Up
          0
          Down
          ::


          Ciao,

          ringrazio molto sia Roberto che Claudio! Purtroppo per me Lua e Python sono come l’arabo; non ne ho la minima nozione. Per quanto riguarda TeX, anche di quello so pochissimo, ma ho sicuramente qualche chance in più. Proverò a cercare l’articolo citato da Claudio e a consultare gli Appunti di programmazione in TeX e LaTeX di Enrico, come mi è stato detto. Forse la cosa più semplice per me è quella di creare un file bat che esegua quelle operazioni di trascrizione da un file all’altro, mettendoci in mezzo i comandi [tt]TikZ.[/tt]

          Intanto grazie e buona giornata,
          Marco.

        • #73535
          OldClaudio
          Partecipante
            Up
            0
            Down
            ::


            Sono giù di esercizio perché non uso più macchine Windows da almeno 6 anni, ma ho il sospetto che fare quella ca con una procedura batch (.bat) bisogna essere dei maghi…:sad: Io non lo sono più, e non lo sono mai stato, anche se ho usato quelle procedure per anni; ora non saprei da che parte cominciare.

            Con i comandi ad argomenti delimitati (il delimitatore è uno spazio fra le coppie di numeri e un segno qualsiasi o una macro priva di senso alla fine) si fa con tre definizioni più l’immissione del file prodotto da TpX per acquisire la stringa dei valori. Naturalmente, siccome la stringa può contenere un numero arbitrario di terne di coordinate, dopo la prima, bisogna prevedere dei test per rendersi conto che si è arrivati alla fine del parsing della stringa.

            Probabilmente con Lua si fa prima, ma con TeX la cosa non è banale, ma non è nemmeno difficile; anche se sei agli inizi, finché non ti cimenti con cose “serie” resti agli inizi…:lol:

          • #73536
            Up
            0
            Down
            ::


            Ciao Claudio,

            grazie davvero.

            OldClaudioanche se sei agli inizi, finché non ti cimenti con cose “serie” resti agli inizi…

            Hai perfettamente ragione. Tempo permettendo proverò a cimentarmi.

            Grazie infinite e ciao,
            Marco.

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

        Go to top