tikz – arrows e scritte

  • Creatore
    Topic
  • #110942
    Up
    0
    Down
    ::


    Buongiorno a tutti
    vi scrivo perché vorrei apporre alcune modifiche ad uno schema prodotto con tikz ma non riesco a capire come.

    Il codice è il seguente
    `
    \documentclass{article}

    \usepackage{tikz}
    \usetikzlibrary{shapes,arrows}
    \usepackage{verbatim}

    \begin{document}

    \tikzstyle{block} = [draw, fill=blue!20, rectangle, minimum height=2em, minimum width=10em]
    \tikzstyle{input} = [coordinate]
    \tikzstyle{output} = [coordinate]
    \tikzstyle{pinstyle} = [pin edge={to-,thin,black}]

    \begin{tikzpicture}[auto, node distance=4cm,>=latex']
    \node [input, name=input] {};
    \node [block, right of=input] (pd) {Phase Detector (PD)};
    \node [block, right of=pd, node distance=6cm] (lf) {Loop Filter (LF)};
    \draw [->] (pd) — node[name=upd] {$u_{PD}(t)$} (lf);
    \node [output, right of=lf] (output) {};
    \node [block, below of=upd] (vco) {VCO};

    \draw [draw,->] (input) — node {input signal} (input);
    \draw [->] (input) — node {$u_{in}(t)$, $\omega_{in}$} (pd);
    \draw [->] (lf) |- node [name=ulf] {$u_{LF}(t)$}(vco);
    \draw [->] (vco) -| node {output signal $u_{out}(t)$, $\omega_{out}$} (pd);
    \end{tikzpicture}

    \end{document}
    `

    e produce questo risultato:

    Ma io vorrei una cosa del genere…

    a cui inoltre:
    – toglierei la piccola punta di freccia sul segnale di input
    – amplierei l’altezza dei rettangoli
    – fare arrivare la freccia che esce da VCO al lato sinistro di Phase Detector in parallelo con la freccia di input

    Cosa potrei modificare?

    Grazie in anticipo a chi mi darà consigli 🙂

Visualizzazione 3 filoni di risposte
  • Autore
    Risposte
    • #110943
      OldClaudio
      Partecipante
        Up
        0
        Down
        ::


        Qualcun altro t dirà a proposito delle frecce. Io ti dico solo che i pedici, in, out, PD, LF vanno tutti in tondo e non in corsivo matematico. In corsivo matematico si scrivono solo le variabili che indicano le grandezze. Queste sono le norme ISO per il tipo di matematica che stai scrivendo.
        Naturalmente questo vale anche per la matematica del tuo testo, non solo per quello schema di flusso, dove, d’altra parte manca la freccia con il segnale di uscita da usare in uscita da quel diagramma di flusso.

      • #110944
        Up
        0
        Down
        ::

        Phoenix” post=111225Buongiorno a tutti
        vi scrivo perché vorrei apporre alcune modifiche ad uno schema prodotto con tikz ma non riesco a capire come.

        Il codice è il seguente
        `
        \documentclass{article}

        \usepackage{tikz}
        \usetikzlibrary{shapes,arrows}
        \usepackage{verbatim}

        \begin{document}

        \tikzstyle{block} = [draw, fill=blue!20, rectangle, minimum height=2em, minimum width=10em]
        \tikzstyle{input} = [coordinate]
        \tikzstyle{output} = [coordinate]
        \tikzstyle{pinstyle} = [pin edge={to-,thin,black}]

        \begin{tikzpicture}[auto, node distance=4cm,>=latex']
        \node [input, name=input] {};
        \node [block, right of=input] (pd) {Phase Detector (PD)};
        \node [block, right of=pd, node distance=6cm] (lf) {Loop Filter (LF)};
        \draw [->] (pd) — node[name=upd] {$u_{PD}(t)$} (lf);
        \node [output, right of=lf] (output) {};
        \node [block, below of=upd] (vco) {VCO};

        \draw [draw,->] (input) — node {input signal} (input);
        \draw [->] (input) — node {$u_{in}(t)$, $\omega_{in}$} (pd);
        \draw [->] (lf) |- node [name=ulf] {$u_{LF}(t)$}(vco);
        \draw [->] (vco) -| node {output signal $u_{out}(t)$, $\omega_{out}$} (pd);
        \end{tikzpicture}

        \end{document}
        `

        e produce questo risultato:

        Ma io vorrei una cosa del genere…

        Prova: `\draw [->] (vco) -| node[pos=0.75] {output signal $u_{out}(t)$, $\omega_{out}$} (pd);` In sostanza, la lunghezza del segmento che tracci viene normalizzata
        fra 0 e 1 perciò puoi personalizzare la posizione di inserimento dei nodi dove vuoi tramite la chiave pos. Attenzione che con il costrutto |- o -| è più difficile individuare il valore corretto, ma basta fare un paio di tentativi.

        Phoenix” post=111225
        a cui inoltre:
        – toglierei la piccola punta di freccia sul segnale di input
        – amplierei l’altezza dei rettangoli
        – fare arrivare la freccia che esce da VCO al lato sinistro di Phase Detector in parallelo con la freccia di input

        Cosa potrei modificare?

        Grazie in anticipo a chi mi darà consigli 🙂

        Punto 1: `\draw [draw,->] (input) — node {input signal} (input);` non ha senso perché questo è quello che fai: il tuo input iniziale è un nodo di tipo coordinata (cioè non ha dimensione), disegni un segmento che va da un punto infinitesimale a se stesso a cui aggiungi un’etichetta e inserisci una freccia direzionale. Per questo motivo, TikZ non protesta, ma ti piazza una freccia la cui punta finisce esattamente nelle coordinate che definiscono il tuo input. Molto semplicmente: `\draw (input) — node {input signal} (input);` Nota che puoi fare molto più semplicemente `\node (input) {input signal};` togliere l’altra riga di codice e ricordarti di piazzare il secondo blocco più a destra del valore di default.

        Punto 2: non lo farei, ma basta modificare il numerino vicino alla chiave minimum height.

        Punto 3: questo richiede un minimo di accorgimento. `\documentclass[tikz,border=2pt]{standalone}

        \usetikzlibrary{calc,shapes,arrows}
        \usepackage{verbatim}

        \begin{document}

        \tikzstyle{block} = [draw, fill=blue!20, rectangle, minimum height=4em, minimum width=10em]
        \tikzstyle{input} = [coordinate]
        \tikzstyle{output} = [coordinate]
        \tikzstyle{pinstyle} = [pin edge={to-,thin,black}]

        \begin{tikzpicture}[auto, node distance=4cm,>=latex']
        \node [coordinate](input) {};
        \node [block, right of=input] (pd) {Phase Detector (PD)};
        \node [block, right of=pd, node distance=6cm] (lf) {Loop Filter (LF)};
        \draw [->] (pd) — node[name=upd] {$u_{PD}(t)$} (lf);
        \node [output, right of=lf] (output) {};
        \node [block, below of=upd] (vco) {VCO};

        %\draw [->] (input) — node {$u_{in}(t)$, $\omega_{in}$} (pd); % cosi non va, bisogna disegnarla al contrario e sistmare la label in alto
        \draw [<-] ($(pd.north west)!0.5!(pd.west)$) coordinate (x) -- node[above] {$u_{in}(t)$, $\omega_{in}$} ($(x-|input)$) coordinate (z); % in pratica: calcolo il punto a 1/3 dell'altezza del rettangolo e salvo in x il valore della coordinata; disegno una freccia che parte da x e punta verso il punto che è l'intersezione fra x e input e salvo in z che uso dopo per includere l'etichetta \draw (z) -- node[left] {input signal} (z); \draw [->] (lf) |- node [name=ulf] {$u_{LF}(t)$}(vco);

        \draw [<-] ($(pd.south west)!0.5!(pd.west)$) coordinate (x) --($(x-|input)!0.5!(x)$) |- (vco) node[pos=0.25, left] {output signal $u_{out}(t)$, $\omega_{out}$};% questo lo devi capire dato il segmento precedente. \end{tikzpicture} \end{document} ` Ciao Claudio

      • #110945
        LuglioM26
        Partecipante
          Up
          0
          Down
          ::


          Ciao, fermo restando la soluzione di Claudio che è migliore, ti propongo:

          `
          \documentclass{article}

          \usepackage{tikz}
          \usetikzlibrary{shapes,arrows}
          \usepackage{verbatim}

          \begin{document}

          \tikzstyle{block} = [draw, fill=blue!20, rectangle, minimum height=4em, minimum width=10em]
          \tikzstyle{input} = [coordinate]
          \tikzstyle{output} = [coordinate]
          \tikzstyle{pinstyle} = [pin edge={to-,thin,black}]

          \begin{tikzpicture}[auto, node distance=4cm,>=latex']
          \node [input, name=input] {};
          \node [block, right of=input] (pd) {Phase Detector (PD)};
          \node [block, right of=pd, node distance=6cm] (lf) {Loop Filter (LF)};
          \draw [->] (pd) — node[name=upd] {$u_{PD}(t)$} (lf);
          \node [output, right of=lf] (output) {};
          \node [block, below of=upd] (vco) {VCO};

          %\draw (input) — node {input signal} (input);
          \draw [below,->] (input) — node {$u_{in}(t)$, $\omega_{in}$} (pd);
          \draw [->] (input) — node {input signal} (pd);
          \draw [->] (lf) |- node [name=ulf,right=1cm, above=1cm] {$u_{LF}(t)$} (vco);
          \draw [->] (vco) -| node

          {output signal $u_{out}(t)$ $\omega_{out}$} (0,0) (pd);
          \end{tikzpicture}

          \end{document}
          `

          Stefano

        • #110946
          Up
          0
          Down
          ::


          Grazie mille a tutti!!

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

      Go to top