两个 tikz 节点之间的覆盖边

两个 tikz 节点之间的覆盖边

我想要 Tikz 中有两个节点,并填充文本。然后我想要一条从第一个节点的一个位置到第二个节点的另一个位置的边:

我想要的是

这是我尝试过的:在 tikz 节点文本中,我使用另一个嵌套的 tikzpicture remember picture,在其中定义坐标,这些坐标稍后可以重复用作边缘起点和终点。(在这里我使用填充节点进行调试)

\documentclass{beamer}

\usepackage{tikz}
\usetikzlibrary{positioning}

\begin{document}

\begin{frame}{Tikz Test}
    \begin{tikzpicture}
        \draw node [text width=60mm,fill=black!5] (n1) {Multi\\line \begin{tikzpicture}[remember picture]\node[fill=black,text width=2mm](start){};\end{tikzpicture} \\text};
        \draw node [text width=60mm,fill=black!5,below=of n1] {Another\\multi\\line \begin{tikzpicture}[remember picture]\node[fill=black,text width=2mm](end){};\end{tikzpicture}\\text};
    \end{tikzpicture}
    \begin{tikzpicture}[overlay]
        \draw (start) -- (end);
    \end{tikzpicture}
\end{frame}

\end{document}

这是我得到的:

我得到了什么

节点(黑色矩形)位于它们应该在的位置,但连接它们的边却永远不在我想要的位置。我尝试了多种变体(尝试定义边的不同位置,以及是否使用该overlay属性),但两个版本都没有产生所需的输出。

答案1

您需要remember picture连接tikzpicture节点:

\documentclass{beamer}

\usepackage{tikz}
\usetikzlibrary{positioning}

\begin{document}

\begin{frame}{Tikz Test}


\begin{tikzpicture}[remember picture]
\draw node [text width=60mm,fill=black!5] (n1) 
  {Multi\\line \begin{tikzpicture}[remember picture]
\node[fill=black,text width=2mm](start){};\end{tikzpicture} \\text};
\draw node [text width=60mm,fill=black!5,below=of n1] {Another\\multi\\line \begin{tikzpicture}[remember picture]\node[fill=black,text width=2mm](end){};\end{tikzpicture}\\text};
    \end{tikzpicture}
\begin{tikzpicture}[remember picture,overlay]
        \draw (start) -- (end);
\end{tikzpicture}
\end{frame}

\end{document}

在此处输入图片描述

顺便说一句,最好不要嵌套tikzpicture

相关内容