중첩된 \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

tikzpictures를 중첩하는 대신 a를 사용하세요 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

저장 상자를 사용하여 tikzpicture를 안전하게 중첩할 수 있으며 좌표가 기억됩니다. 작동 방식은 [remember picture]원점 위치를 aux 파일에 저장하는 것이므로 코드를 두 번 실행해야 합니다.

노드 내부에 그림을 배치하면 그림의 중심이 노드 위치(원점)에 맞춰집니다(기본값).

\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}

관련 정보