
Ich versuche, die folgende Abbildung in Latex nachzubilden:
Mit einem davon habe ich kein großes Problem:
\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}
Aber ich bin mir nicht sicher, wie ich den Rest erstellen soll. Ich dachte daran, sie zu kopieren und in eine Tabelle einzufügen. Aber Multirow scheint nicht zu funktionieren und gibt einen Kompilierungsfehler aus:
\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}
Wenn ich alles in einem Bild mache, schaudert es mich, weil ich die Knoten erneut manuell nummerieren muss. Wie soll ich dieses Problem lösen?
Antwort1
tikzpicture
Wenn Sie einige oder einen Teil davon wiederholen möchten , pics
sind dies eine gute Option. Der folgende Code zeigt, wie man sie verwendet. A pic
wird deklariert, um Ihr Originaldiagramm zu zeichnen, und dieses Bild wird innerhalb mehrerer tikzpictures
verteilter Bilder innerhalb von a verwendet tabular
, wobei die erste Spalte ein ist multirow
.
Wie Sie sehen, array
stellt pic nur einen Teil des Diagramms dar, der durch labels
Hinzufügen weiterer Verbindungslinien in jedem einzelnen Bild vervollständigt werden kann. Da sie pic
einen Namen haben können, können Sie diese Namen später verwenden, um Verbindungen zwischen ihnen herzustellen.
\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}