在下面的代码中
\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
s,而要使用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
您可以使用 saveboxes 安全地嵌套 tikzpictures,坐标将被记住。[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}