在多行中使用 tikz

在多行中使用 tikz

我正在嘗試在乳膠中重新創建下圖:

在此輸入影像描述

現在,我對其中一個沒有太大問題:

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{arrows,backgrounds}

\usepackage[utf8]{inputenc} %utf-8 encoding
\usepackage{amssymb} %math symbols

\begin{document}

\begin{frame}
\begin{tikzpicture}[align=center,node distance=1cm]
\tikzstyle{vertex}=[circle,draw=black]
\tikzstyle{fluct}=[dotted]

\node[vertex] (v0) {};
\node[vertex] (v1) [right of = v0] {};
\node[vertex] (v2) [right of = v1] {};
\node[vertex] (v3) [below of = v0] {};
\node[vertex] (v4) [right of = v3] {};
\node[vertex] (v5) [right of = v4] {};

\node () [above of = v1] {Una realización};

\path[every node] 
  (v0) edge [] (v1)
  (v0) edge [] (v3)
  (v1) edge [] (v4)
  (v1) edge [fluct] (v2)
  (v2) edge [] (v5)
  (v4) edge [fluct] (v5);
\end{tikzpicture}
\end{frame}
\end{document}

但不確定如何創建其餘部分。我正在考慮將它們複製並貼上到表格中。但多行似乎不起作用,會出現編譯錯誤:

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{arrows,backgrounds}

\usepackage[utf8]{inputenc} %utf-8 encoding
\usepackage{amssymb} %math symbols

\begin{document}

\begin{frame}
\begin{figure}

\begin{tabular}{cc}

\multirow{4}{*} {

\begin{tikzpicture}[align=center,node distance=1cm]
\tikzstyle{vertex}=[circle,draw=black]
\tikzstyle{fluct}=[dotted]

\node[vertex] (v0) {};
\node[vertex] (v1) [right of = v0] {};
\node[vertex] (v2) [right of = v1] {};
\node[vertex] (v3) [below of = v0] {};
\node[vertex] (v4) [right of = v3] {};
\node[vertex] (v5) [right of = v4] {};

\node () [above of = v1] {Una realización};

\path[every node] 
  (v0) edge [] (v1)
  (v0) edge [] (v3)
  (v1) edge [] (v4)
  (v1) edge [fluct] (v2)
  (v2) edge [] (v5)
  (v4) edge [fluct] (v5);
\end{tikzpicture}

}
\\
& a \\ & b \\ & c \\ & d
\end{tabular}
\end{figure}
\end{frame}
\end{document}

在一張圖像中完成這一切讓我感到畏縮,因為我必須再次手動對節點進行編號。我該如何解決這個問題?

答案1

如果您想重複其中的部分tikzpicture或部分內容,pics這是一個不錯的選擇。以下程式碼展示如何使用它們。聲明Apic來繪製原始圖形,並且該圖片用於分佈在tikzpicturesa 中的多個分佈中tabular,其中第一列是 a multirow

正如您所看到的,arraypic 僅繪製了圖形的一部分,可以透過labels在每個特定圖片中添加更多互連線來完成該圖形。由於pic可以有一個名稱,您稍後可以使用這些名稱來在它們之間建立一些聯繫。

\documentclass{article}
\usepackage{multirow}
\usepackage{tikz}
\usetikzlibrary{arrows,backgrounds,matrix, positioning}

\usepackage[utf8]{inputenc} %utf-8 encoding
\usepackage{amssymb} %math symbols

\tikzset{
    vertex/.style={circle, fill=black},
    fluct/.style=dotted,
    array/.pic = {
        \foreach \i [count=\row] in {0,1}
            \foreach \j [count=\col] in {0,1,2,3}
                \node[vertex] (\row\col) at (\col,-\row) {};
        \draw (21)|-(13)|-(24)--(14);
        \draw (22)--(12);
    }
}
\begin{document}

\begin{tabular}{cc}

\multirow{4}{*}[-1cm]{%
\begin{tikzpicture}[remember picture]
\pic (A) {array};
\path (A11) -- (A14) node[midway,above=3mm] {Una realización};
\draw[fluct] (A13)--(A14);
\end{tikzpicture}}
&
\begin{tikzpicture}[remember picture]
\pic (B) {array};
\path (B11) -- (B21) node[midway,left=3mm] {Una realización};
\draw[fluct] (B21)--(B22);
\end{tikzpicture}
\\
&
\begin{tikzpicture}[remember picture]
\pic (C) {array};
\path (C11) -- (C21) node[midway,left=3mm] {Una realización};
\draw[fluct] (C22)--(C23);
\end{tikzpicture}
\\
&
\begin{tikzpicture}[remember picture]
\pic (D) {array};
\path (D11) -- (D21) node[midway,left=3mm] {Una realización};
\draw[fluct] (D21)--(D23);
\end{tikzpicture}
\\
&
\begin{tikzpicture}[remember picture]
\pic (E) {array};
\path (E11) -- (E21) node[midway,left=3mm] {Una realización};
\end{tikzpicture}
\end{tabular}

\tikz[remember picture, overlay] \draw[red,thick,->] (A12) to[out=30, in=60] (B13);
\end{document}

在此輸入影像描述

相關內容