Ancora sulle frecce in TikZ

  • Creatore
    Topic
  • #73802
    Up
    0
    Down
    ::


    Ciao a tutti,

    torno ancora su [tt]TikZ,[/tt] e in particolare sulle frecce. Mi piacerebbe avere a disposizione un tipo di freccia come quello mostrato nella prima figura di pagina 444 della documentazione del pacchetto. Mi piacerebbe poter scrivere qualcosa come:
    `\tikzstyle{freccia}=[…]
    \begin{tikzpicture}
    \draw [freccia] (0,0) — (1,0);
    \end{tikzpicture}`
    e ottenere lo stesso effetto grafico (con la punta in una sola direzione). Per essere più chiaro, allego un’immagine. [attachment=290]freccia.pdf[/attachment]

    Ho “sfogliato” pagina per pagina tutta la documentazione di [tt]TikZ,[/tt] ma non ho trovato la soluzione. Credete che si possa fare?

    Grazie mille e ciao,
    Marco.

    Attachments:
    You must be logged in to view attached files.
Visualizzazione 12 filoni di risposte
  • Autore
    Risposte
    • #73803
      Up
      0
      Down
      ::

      Marco87″ post=72983Ciao a tutti,

      torno ancora su [tt]TikZ,[/tt] e in particolare sulle frecce. Mi piacerebbe avere a disposizione un tipo di freccia come quello mostrato nella prima figura di pagina 444 della documentazione del pacchetto. Mi piacerebbe poter scrivere qualcosa come:
      `\tikzstyle{freccia}=[…]
      \begin{tikzpicture}
      \draw [freccia] (0,0) — (1,0);
      \end{tikzpicture}`
      e ottenere lo stesso effetto grafico (con la punta in una sola direzione). Per essere più chiaro, allego un’immagine. [attachment=290]freccia.pdf[/attachment]

      Ho “sfogliato” pagina per pagina tutta la documentazione di [tt]TikZ,[/tt] ma non ho trovato la soluzione. Credete che si possa fare?

      Grazie mille e ciao,
      Marco.

      Ciao. In effetti si può fare abbastanza facilmente andando a creare un segmento che parta dalla tail fino a tip. Ad esempio:

      `
      \documentclass{article}
      \usepackage{tikz}
      \usetikzlibrary{shapes.arrows}
      \begin{document}
      \tikzset{freccia/.style={single arrow, draw=none,fill=gray!80!black,minimum height=#1,minimum width=1cm}}
      \begin{tikzpicture}[every node/.style={single arrow, draw=none}]
      \node [freccia=2cm,single arrow head indent=1ex] (x) at (1.5,0) {};
      \draw[yellow,draw,line width=2pt](x.tail)–(x.tip);
      \end{tikzpicture}
      \end{document}
      `
      Nota che nel mio codice puoi specificare la lunghezza della freccia come parametro (da inserirsi quando definisci lo stile nel \node).

      Ciao
      Claudio

    • #73804
      Up
      0
      Down
      ::


      Ciao Claudio,

      intanto grazie della risposta! Ho provato il tuo codice e ho incontrato un problema: io vorrei avere disponibile quello stile allo stesso modo in cui, per esempio, uso [tt]-stealth,[/tt] quindi anche non specificando (ne sapendo) le coordinate di partenza e di arrivo della freccia. Mi spiego meglio: se realizzo uno schema con i comandi esposti nella documentazione del pacchetto [tt]tikz-er2[/tt] (che hai indicato nella tua guida), posso specificare lo stile degli [tt]edge[/tt] di collegamento. Posso avere quello stile anche in questo caso?

      Grazie mille e buona serata,
      Marco.

    • #73805
      OldClaudio
      Partecipante
        Up
        0
        Down
        ::



        @Marco
        87, sai che sono impallinato di documentazione; ho aperto con texdoc la documentazione di tikz e dopo due click di numero ero a pagina 442, in fondo, e a pagina 43, in testa, e nell’esempio “arrow 1” è esattamente quello che vuoi, se ho capito il tuo problema. E se non vuoi scriverci niente dentro, ti basta lasciare vuoto il gruppo del testo da inserire nel nodo, oppure puoi metterci uno strut orizzontale (che ruota insieme alla freccia) che ne stabilisce le dimensioni; lo strut orizzontale si crea con \rule{lunghezza}{0pt}.

      • #73806
        Up
        0
        Down
        ::


        Ciao Claudio (OldClaudio),

        OldClaudio @Marco 87, sai che sono impallinato di documentazione; ho aperto con texdoc la documentazione di tikz e dopo due click di numero ero a pagina 442, in fondo, e a pagina 43, in testa, e nell’esempio “arrow 1” è esattamente quello che vuoi, se ho capito il tuo problema

        In effetti, Claudio, nel mio primo messaggio ho citato la pagina 444, che propone un esempio identico se non fosse per la freccia con punta sia all’inizio che alla fine. Ma non è quello il problema. Quegli esempi sono stili applicati ai nodi e non alle frecce.

        Marco87Mi spiego meglio: se realizzo uno schema con i comandi esposti nella documentazione del pacchetto [tt]tikz-er2[/tt] (che hai indicato nella tua guida), posso specificare lo stile degli edge di collegamento. Posso avere quello stile anche in questo caso?

        L’applicazione mi serve per questo tipo di schemi, e con il codice presentato alle pagine 442-444 non riesco a ottenere quello che desidero: avere quella freccia come collegamento ([tt]edge[/tt]) fra le varie parti dello schema.

        Grazie e buona serata,
        Marco.

      • #73807
        Up
        0
        Down
        ::


        Ciao Marco,

        forse non ho capito bene la richiesta. 🙂 Dal pdf che hai allegato sembrava tu volessi “colorare” in modo diverso la parte centrale della freccia, cosa che il codice postato in precedenza fa. In un contesto di un diagramma relazionale come quelli che si possono creare con tikz-er2 una freccia così grande non la metterei se il documento fosse mio. Nel caso specifico, i comandi illustrati per spiegare l’uso della libreria shapes.arrows non vanno bene per disegnare una freccia tipo \draw ()–(); perché sia single arrow che double arrow calcolano la lunghezza del segmento con riferimento base il testo inserito (poi ovviamente puoi aggiustare con minimum width e compagnia). Per avere una freccia che segua un path da te definito devi ricorrere per forza a qualcosa come \draw[-latex]()–();: tu vorresti applicare in quel caso una colorazione centrale diversa da definirsi con uno stile?

        Ciao
        Claudio

      • #73808
        Up
        0
        Down
        ::


        Ciao Claudio (cfiandra),

        cfiandraPer avere una freccia che segua un path da te definito devi ricorrere per forza a qualcosa come \draw[-latex]()–();: tu vorresti applicare in quel caso una colorazione centrale diversa da definirsi con uno stile?

        Sì, qualcosa di molto simile, ma in modo che la freccia nel complesso sia tutta dello stesso colore. In definitiva vorrei disegnare uno schema come quelli mostrati nella documentazione di [tt]tikz-er2,[/tt] ma come collegamenti vorrei avere delle frecce con la resa grafica di quella che ho allegato nel primo messaggio. Il massimo sarebbe avere uno [tt]shade[/tt] del colore della freccia, ma forse sto già chiedendo troppo con un colore solo.

        Ti ringrazio tantissimo e ti auguro una buona serata,
        Marco.

        P.S. Appena riesco faccio un disegno con un programma CAD per mostrare direttamente il risultato che desidero ottenere.

      • #73809
        Up
        0
        Down
        ::

        Marco87″ post=73022Ciao Claudio (cfiandra),

        Per avere una freccia che segua un path da te definito devi ricorrere per forza a qualcosa come \draw[-latex]()–();: tu vorresti applicare in quel caso una colorazione centrale diversa da definirsi con uno stile?

        Sì, qualcosa di molto simile, ma in modo che la freccia nel complesso sia tutta dello stesso colore. In definitiva vorrei disegnare uno schema come quelli mostrati nella documentazione di [tt]tikz-er2,[/tt] ma come collegamenti vorrei avere delle frecce con la resa grafica di quella che ho allegato nel primo messaggio. Il massimo sarebbe avere uno [tt]shade[/tt] del colore della freccia, ma forse sto già chiedendo troppo con un colore solo.

        Ti ringrazio tantissimo e ti auguro una buona serata,
        Marco.

        P.S. Appena riesco faccio un disegno con un programma CAD per mostrare direttamente il risultato che desidero ottenere.

        Ora ho capito. Il discorso è un po’ diverso allora perché in pratica non è tanto la freccia che si deve andare a modificare, ma piuttosto inserire una linea (non in giallo su grigio :D) di colore più chiaro nel centro di un segmento preesistente, partendo dalla coda fino alla punta.

        Ci devo pensare…

        Ciao
        Claudio

      • #73810
        Up
        0
        Down
        ::


        Ciao,

        allego un’immagine che rappresenta il risultato grafico che vorrei ottenere. Spero che sia sufficientemente chiara.
        [attachment=296]schema.pdf[/attachment]

        Grazie mille e ciao,
        Marco.

        Attachments:
        You must be logged in to view attached files.
      • #73811
        Up
        0
        Down
        ::

        Marco87″ post=73064Ciao,

        allego un’immagine che rappresenta il risultato grafico che vorrei ottenere. Spero che sia sufficientemente chiara.
        [attachment=296]schema.pdf[/attachment]

        Grazie mille e ciao,
        Marco.

        Dallo schema, la figura assomiglia molto ad un albero. Hai pensato di realizzare qualcosa tipo l’esempio a pagina 114 del pgfmanual versione Ottobre 2010? In quel caso si tratterebbe di creare lo stile freccia nel path edge from parent.

        Ciao
        Claudio

      • #73812
        Up
        0
        Down
        ::


        Ciao Claudio,

        in effetti non ci avevo pensato. A me piacerebbe avere quello stile di freccia in qualsiasi ambito, però se riuscissi a farlo almeno per quegli schemi sarebbe già molto buono. Guardando quegli esempi direi che potrebbe proprio fare al caso mio! Pensi che in questo ambito si possa creare lo stile di freccia che dicevo?

        Grazie e ciao,
        Marco.

      • #73813
        Up
        0
        Down
        ::

        Marco87″ post=73224Ciao Claudio,

        in effetti non ci avevo pensato. A me piacerebbe avere quello stile di freccia in qualsiasi ambito, però se riuscissi a farlo almeno per quegli schemi sarebbe già molto buono. Guardando quegli esempi direi che potrebbe proprio fare al caso mio! Pensi che in questo ambito si possa creare lo stile di freccia che dicevo?

        Grazie e ciao,
        Marco.

        Ho finalmente risolto l’arcano (e con molta soddisfazione per aver imparato ad usare le chiavi TikZ, non bene magari, ma in modo funzionante)! 🙂

        Il mio codice, commentato, è:

        `
        \documentclass{article}
        \usepackage{tikz}
        \usetikzlibrary{shapes.arrows,calc} %<= shapes.arrows per lo stile single arrow, calc per un piccolo conto % macro per estrarre un angolo da due coordinate % by Altermundus: % http://tex.stackexchange.com/questions/39293/coordinates-a-b-compute-b-a-and-angle-between-x-and-b-a
        \newcommand{\pgfextractangle}[3]{%
        \pgfmathanglebetweenpoints{\pgfpointanchor{#2}{center}}
        {\pgfpointanchor{#3}{center}}
        \global\let#1\pgfmathresult
        }

        % definizione dello stile freccia
        \tikzset{stylefreccia/.style={single arrow, draw=none,fill=gray!80!black,minimum height=#1,minimum width=0.5cm}}
        % definizione dei comandi attivati dalla freccia
        \tikzset{freccia/.code={
        \coordinate (A) at (\tikzparentnode.south); % <= definisco la coordinata della radice \coordinate (B) at (\tikzchildnode.north); % <= definisco la coordinata della foglia \pgfextractangle{\angle}{A}{B} % <= calcolo l'angolo fra i due \node [stylefreccia=1cm,single arrow head indent=1ex,rotate=\angle] (x) at ($(\tikzparentnode.south)!0.5!(\tikzchildnode.north)$){}; % <= inserisco il nodo esattamente a metà fra radice e foglia con l'inclinazione calcolata prima \draw[gray!20,draw,line width=2pt](x.tail)--(x.tip); % <= disegno centralmente il segmento nel nodo freccia } } \begin{document} \tikzset{edge from parent/.style={freccia}} % <= definizione della nostra freccia \begin{center} \begin{tikzpicture}[level distance=2cm, level 1/.style={sibling distance=30mm}, level 2/.style={sibling distance=20mm}, level 3/.style={sibling distance=10mm} ] \node {root} child {node {left} child {node{child}}} child {node {right} child {node {child}} child {node {child}} }; \end{tikzpicture} \end{center} \end{document} ` Risultato grafico: [attachment=306]Immagine_2012-05-24.jpg[/attachment] Piccolo problema: non capisco perché il testo nei nodi foglia sembra essere in bold. :( Ciao Claudio

        Attachments:
        You must be logged in to view attached files.
      • #73814
        Up
        0
        Down
        ::


        Ciao Claudio,

        intanto grazie mille! 🙂

        cfiandraHo finalmente risolto l’arcano (e con molta soddisfazione per aver imparato ad usare le chiavi TikZ, non bene magari, ma in modo funzionante)! 🙂

        Sono davvero felice per te, capisco la soddisfazione e spero un giorno di arrivarci anche io. 🙂

        Riguardo al codice che hai scritto:

        1. Personalmente preferisco le frecce senza il segmento centrale più chiaro, ma per questo basta commentare un riga del tuo codice;
        2. Per il testo con “effetto bold”, appena ho tempo provo a vedere com’è il risultato che si ottiene stampando;
        3. Lo userò sicuramente, grazie ancora!

        Ciao e buona giornata,
        Marco.

      • #73815
        Up
        0
        Down
        ::


        Ciao Claudio,

        completo la risposta di poco fa. Ti ringrazio davvero molto dei commenti, perché in effetti cercherò di assimilare il codice che hai scritto.

        Grazie e ciao,
        Marco.

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

    Go to top