从节点内的表格单元格绘制线

从节点内的表格单元格绘制线

我想从节点内的表格单元格画一条线。

\documentclass{standalone}
\usepackage{tikz}
\usetikzlibrary{positioning}
\newcommand{\mk}[2]{\tikz \node (#1) {#2};}%
\begin{document}
\begin{tikzpicture}[>=latex]
    \node (N1) [shape=rectangle] {
        \begin{tabular}{|c|c|c|}
        \multicolumn{3}{c}{title} \\ \hline
        \mk{A}{11} & 12 & 13 \\ \hline
        21 & 22 & 23 \\ \hline
        \end{tabular}
    };  
    \node[right=1cm of N1,draw] (N2) {X};
    \draw[<->,red] (A) -- ([yshift=1cm]A) -| (N2);
\end{tikzpicture}
\end{document}

但:

  1. 用 tikz 命令标记的单元格稍微移动一下。

  2. 输出不是来自单元格。 在此处输入图片描述

答案1

您的方法嵌套了tikzpictures,这是不受支持的。我可以看到两个明显的选择:

  1. 使用tikzmarks \subnode
  2. 用一个matrix

他们来了

\documentclass{standalone}
\usepackage{tikz}
\usetikzlibrary{positioning,tikzmark}
\begin{document}
\begin{tikzpicture}[>=latex,remember picture]
    \node (N1) [shape=rectangle] {
        \begin{tabular}{|c|c|c|}
        \multicolumn{3}{c}{title} \\ \hline
        \subnode{A}{11} & 12 & 13 \\ \hline
        21 & 22 & 23 \\ \hline
        \end{tabular}
    };  
    \node[right=1cm of N1,draw] (N2) {X};
    \draw[<->,red] (A.north) -- ++(0,0.5) -| (N2);
\end{tikzpicture}
\end{document}

在此处输入图片描述

\documentclass{standalone}
\usepackage{tikz}
\usetikzlibrary{positioning,matrix}
\begin{document}
\begin{tikzpicture}[>=latex]
    \path node[matrix,matrix of nodes,label=above:title,
        cells={nodes={draw}},
        column sep=-\pgflinewidth/2,row sep=-\pgflinewidth/2]
    (N)
    {    11 & 12 & 13 \\ 
        21 & 22 & 23 \\ 
    };  
    \node[right=1cm of N-2-3,draw] (N2) {X};
    \draw[<->,red] (N-1-1)  -| (N2);
\end{tikzpicture}
\end{document}

在此处输入图片描述

相关内容