
Estoy intentando recrear la siguiente figura en látex:
Ahora, no tengo muchos problemas con uno de ellos:
\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}
Pero no estoy seguro de cómo crear el resto. Estaba pensando en copiarlos y pegarlos en una tabla. Pero varias filas parecen no funcionar y aparece un error de compilación:
\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}
Hacerlo todo en una imagen me da vergüenza porque tengo que volver a numerar los nodos manualmente. ¿Cómo debo solucionar este problema?
Respuesta1
Si quieres repetir parte tikzpicture
o parte de él, pics
son una buena opción. El siguiente código muestra cómo usarlos. Se declara A pic
para dibujar su gráfico original, y esta imagen se usa dentro de varios tikzpictures
distribuidos dentro de una tabular
donde la primera columna es a multirow
.
Como puede ver, array
la imagen solo dibuja una parte del gráfico que se puede completar labels
agregando algunas líneas de interconexión más en cada imagen en particular. Como pic
puede tener un nombre, más adelante podrá utilizar estos nombres para establecer algunas conexiones entre ellos.
\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}