
次の図をラテックスで再現しようとしています:
さて、私はそのうちの 1 つにはあまり問題を感じていません。
\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 つの画像にまとめると、ノードに再度手動で番号を付けなければならないので面倒です。この問題はどのように解決すればよいでしょうか?
答え1
tikzpicture
グラフの一部または全体を繰り返したい場合は、pics
が適しています。次のコードは、 の使用方法を示しています。 は、元のグラフを描画するために宣言され、この pic は、最初の列が である内に分散されたpic
複数の 内で使用されます。tikzpictures
tabular
multirow
ご覧のとおり、array
pic はグラフの一部のみを描画します。グラフは、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}