tikz dan node menggambar

Sep 27 2020

Saya ingin memperluas contoh "node" ini dengan menambahkan 6 node lagi tetapi saya tidak dapat melihat logika di balik kode sampel ini. Saya tidak bisa mendapatkan hubungan (a), (b) dan (c) dan bagaimana mereka sebenarnya digunakan. Bisakah seseorang menjelaskan ini kepada saya? Berikut ini tautan keluarannya:https://texample.net/tikz/examples/nav1d/

\documentclass{article}

\usepackage{tikz}
\usetikzlibrary{arrows}
\begin{document}
\pagestyle{empty}
%
\tikzstyle{int}=[draw, fill=blue!20, minimum size=2em]
\tikzstyle{init} = [pin edge={to-,thin,black}]

\begin{tikzpicture}[node distance=2.5cm,auto,>=latex']
    \node [int, pin={[init]above:$v_0$}] (a) {$\frac{1}{s}$};
    \node (b) [left of=a,node distance=2cm, coordinate] {a};
    \node [int, pin={[init]above:$p_0$}] (c) [right of=a] {$\frac{1}{s}$};
    \node [coordinate] (end) [right of=c, node distance=2cm]{};
    \path[->] (b) edge node {$a$} (a);
    \path[->] (a) edge node {$v$} (c);
    \draw[->] (c) edge node {$p$} (end) ;
\end{tikzpicture}

\end{document}

Jawaban

2 Zarko Sep 27 2020 at 13:15
  • pertanyaan Anda tidak sepenuhnya jelas ...
  • Contoh yang digunakan agak tua, akibatnya sekarang digunakan sintaks yang tidak digunakan lagi ( tikzstylebukan tikzset, dll)
  • dengan asumsi, bahwa semua node berada dalam rantai, memiliki ukuran dan konten yang sama, daripada Anda dapat menggambarnya menggunakan chainslibrary, untuk label quotespustaka penggunaan edge dan gaya penentu untuk setiap edge dan pin:
\documentclass[tikz, margin=3mm]{standalone}
\usetikzlibrary{arrows.meta,
                chains,
                positioning,
                quotes}

\begin{document}
    \begin{tikzpicture}[
node distance = 12mm,
  start chain = going right, 
   int/.style = {draw, fill=blue!20, minimum size=2em, font=\large, 
                 on chain},
 every edge/.style = {draw, -Latex},
every edge quotes/.style = {auto, font=\footnotesize, text depth=0.25ex},
  every pin/.style = {pin edge={Latex-,thin,black}, font=\footnotesize}
                        ]
% nodes vith pin above
\coordinate[on chain] (in);
\node (a) [int, pin=$v_0$] {$\frac{1}{s}$};
\node (b) [int, pin=$p_0$] {$\frac{1}{s}$};
\node (c) [int, pin=$p_1$] {$\frac{1}{s}$};
\node (d) [int, pin=$p_2$] {$\frac{1}{s}$};
\node (e) [int, pin=$p_3$] {$\frac{1}{s}$};
\coordinate[on chain] (out);
% connection between nodes
\draw   (in)    edge ["$a$"] (a) 
        (a)     edge ["$v$"] (b) 
        (b)     edge ["$p$"] (c)
        (c)     edge ["$p_1$"] (d)
        (d)     edge ["$p_2$"] (e)
        (e)     edge ["$p_3$"] (out) ;
    \end{tikzpicture}
\end{document}

Jika Anda ingin memiliki lebih banyak node dalam rantai, tambahkan saja ke yang sudah ada. Jika Anda tidak membutuhkan kondisi awal, cukup masukkan pin.

Edit: Contoh yang Anda berikan, memiliki dua bagian:

  • Definisi gaya (di mana sintaks yang tidak digunakan lagi digunakan, hari ini harus ditulis sebagai:
\tikzset{
  int/.style = {draw, fill=blue!20, minimum size=2em},
 init/.style = {pin edge={to-,thin,black}}
         }

atau sebagai pilihan dari tikzpicture:

\begin{tikzpicture}[node distance=2.5cm,auto,>=latex',
 int/.style = {draw, fill=blue!20, minimum size=2em},
init/.style = {pin edge={to-,thin,black}}
               ]
  • Tubuh gambar, di mana Anda menggambar apa yang ingin Anda miliki pada gambar. Ini dapat Anda lakukan dengan berbagai cara. Sebagai contoh,
    • menggunakan node od pemosisian absolut:
\node (<name>) [<style>] at (<x coordinate>,<y coordinate>) {<node content>};
  • menggunakan node od posisi relatif:
\node (<name 1>) [<style 1>] at (<x coordinate>,<y coordinate>) {<node content>};
\node (<name 2>) [<style 2>, above right=of <name 1>]  {<node content>};

dimana <node 2>akan ditempatkan di atas dan kiri dari node <node 2>untuk jarak node yang dideklarasikan di tikzsetatau sebagai opsi seperti yang dilakukan pada contoh yang ditunjukkan di atas

  • garis yang bisa Anda gambar sebagai
\draw[<option>] (<coordinate 1>) -- (<coordinate 2>);

dimana untuk <option>Anda dapat menggunakan misalnya initseperti yang dilakukan di MWE yang ditunjukkan (Contoh Kerja Minimal) dalam pertanyaan Anda dan untuk koordinat gunakan nama node.

atau gunakan pendekatan yang lebih maju seperti yang digunakan dalam jawaban saya.

  • untuk opsi lain, Anda perlu membuat diri Anda lebih terbiasa dengan paket TikZ dan pustaka mereka. Manual adalah bagian dari instalasi LaTeX Anda atau Anda dapat menemukannya di CTAN (gunakan google untuk tikz.sty ).
  • Manula sangat besar, jadi untuk mulai membaca bagian I Tutorial dan Panduan dan kemudian bagian III: TikZ ist ke program Zeichen .
  • Jika Anda terjebak dalam menggambar beberapa gambar Anda, mintalah bantuan konkret di sini. Di sini mohon berikan MWE, yang mereproduksi masalah Anda, sehingga orang dapat lebih mudah membantu Anda (Mempersiapkan MWE, contohnya ada di jawaban saya, berkali-kali membantu Anda menemukan solusi atau menemukan kesalahan dalam kode sendiri)
  • Situs tidak dimaksudkan untuk memberikan pedoman umum bagaimana menggunakan tikzpaket.
2 jsbibra Sep 27 2020 at 08:01

Penjelasan lengkapnya ada di bawah--

\documentclass{article}

\usepackage{tikz}
\usetikzlibrary {arrows.meta,graphs,shapes.misc}
\usetikzlibrary{arrows}
\begin{document}
    \pagestyle{empty}
    %no headers and footers just a blank page
    \tikzstyle{int}=[draw, fill=blue!20, minimum size=2em]
    %macro for (draw)ing square, (fill) inside color blue, default size 2em
    \tikzstyle{init} = [pin edge={to-,thin,black}]
    %macro for arrows/ edges
    
    \begin{tikzpicture}[node distance=2.5cm,auto,>=latex']
        %separation between nodes 2.5cm, type of arrows defined with >=latex
        \node [int, pin={[init]above:$v_0$}] (a) {$\frac{1}{s}$};
        %call the int macro for square named (a), and the init macro for the arrow 
        pointing (to-a), label above the arrow is v_0, and text inside the named node 
        is  {$\frac{1}{s}$}
        \node (b) [left of=a,node distance=2cm, coordinate] {a};
        %node named (b) placed left of node named (a), tec=xt inside the node is {a}
        \node [int, pin={[init]above:$p_0$}] (c) [right of=a] {$\frac{1}{s}$};
        %same as first node named (a)
        \node [coordinate] (end) [right of=c, node distance=2cm]{};
        %same as node named (end) after node named (c)
        \path[->] (b) edge node {$a$} (a);
        %draw an arrow from node b to node a, label above the arrow  {$a$}
        \path[->] (a) edge node {$v$} (c);
        %same as arrow above
        \draw[->] (c) edge node {$p$} (end) ;
        %same as arrow above
    \end{tikzpicture}
\end{document}