ネストされた \tikzpicture 内の座標にアクセスする

ネストされた \tikzpicture 内の座標にアクセスする

次のコードでは

\documentclass{article}
\thispagestyle{empty}
\usepackage{graphicx}
\usepackage{tikz}
\begin{document}
\begin{figure}
  \begin{tikzpicture}
    \node(inset) {
      \begin{tikzpicture}
        \coordinate(v) at (3, 4);
        \node(t) at (v){v};
        \draw[->] (1,2) -- (v);
        \end{tikzpicture}
    };
    \node(t2)[blue] at (v){v};
    \draw[->, red](5, -2) -- (v);
  \end{tikzpicture}
\end{figure}
\end{document}

\coordinateネストされた 内の「v」に対応する特定のポイントに矢印を描画してみます\tikzpicture

\coordinate結果から、「v」は歩いたようです。

ここに画像の説明を入力してください

直し方?

答え1

をネストする代わりにtikzpicture、 を使用しますlocal bounding box

\documentclass{article}
\thispagestyle{empty}
\usepackage{tikz}
\usetikzlibrary{fit}
\begin{document}
\begin{figure}
\begin{tikzpicture}
\begin{scope}[local bounding box=inset]
        \coordinate(v) at (3, 4);
        \node(t) at (v){v};
        \draw[->] (1,2) -- (v);
\end{scope}
  \node(t2)[blue] at (v){v};
  \draw[->, red](5, -2) -- (v);

\draw [red] (inset.east) -- (inset.west);
\end{tikzpicture}
\end{figure}
\end{document}

答え2

セーブボックスを使用して tikzpictures を安全にネストすることができ、座標が記憶されます。[remember picture]動作方法は、aux ファイルに元の場所を保存することなので、コードを 2 回実行する必要があります。

画像をノード内に配置すると、画像がノードの位置 (原点) の中央に配置される (デフォルト) ことに注意してください。

\documentclass{article}
\thispagestyle{empty}
\usepackage{graphicx}
\usepackage{tikz}
\begin{document}
\begin{figure}
\sbox0{\begin{tikzpicture}[remember picture]
        \coordinate(v) at (3, 4);
        \node(t) at (v){v};
        \draw[->] (1,2) -- (v);
        \end{tikzpicture}
}
  \begin{tikzpicture}[remember picture]
    \node(inset) {\usebox0};
    \node(t2)[blue] at (v){v};
    \draw[->, red](5, -2) -- (v);
  \end{tikzpicture}
\end{figure}
\end{document}

デモ

答え3

\tikzstyle{すべての画像}+=[画像を覚えておく]を試してください

\documentclass{article}
\thispagestyle{empty}
\usepackage{tikz}

\begin{document}
  \tikzstyle{every picture}+=[remember picture]
  \begin{tikzpicture}
    \node(inset) {
      \begin{tikzpicture}[remember picture]
       \coordinate(v) at (3, 4);
       \node(t) at (v){v};
       \draw[->] (1,2) -- (v);
      \end{tikzpicture}
    };
    \node(t2)[blue] at (v){v};
    \draw[->, red](5, -2) -- (v);
  \end{tikzpicture}
\end{document}

関連情報