Tikz 如何绘制一条线来分割矩形

Tikz 如何绘制一条线来分割矩形

我正在绘制 ER 图并想显示表之间的关系。

在此处输入图片描述

我设法创建了表格:

\documentclass{article}
\usepackage[cm]{fullpage}
\usepackage[utf8]{inputenc}
\usepackage{tikz}
\usetikzlibrary{shapes,positioning}

\tikzset{
  outernode/.style={draw,ultra thick,inner sep=0},
  innernode/.style={inner sep=.3333em,draw,rectangle split}
}
\newcommand\innernode[2]{\tikz\node[innernode,rectangle split parts=#1]{#2};}

\begin{document}
\begin{tikzpicture}
  \node (1) [outernode]
       { \innernode 2 {sco\_groups \nodepart{second} id} } ;
  \node (2) [below= 1cm of 1.south east, anchor=north west, outernode]
       { \innernode 3 {sco\_index \nodepart{second} tid \nodepart{third} sco\_id} } ;
\end{tikzpicture}
\end{document}

但不知道如何创建线,将它们合并起来(我用红色标记)。

答案1

更新:

我认为\tikz \node您不应该使用(早期的解决方案——见下文)。至少我无法弄清楚如何使用该方法访问特定内容nodepart。因此这里有三个更新:

  • 根据 Jake 的建议,使用(1.south) |- (2.two west)绘制红色线条更简单。现在要连接到 ,sco_id您只需通过 访问此节点的一侧即可(2.three west)
  • TeX\innernode已被淘汰。
  • innernode 风格已增强以接受附加参数,从而允许您指定内部节点的数量。

现在您可以轻松访问nodepart您想要的任何内容:

在此处输入图片描述


您可以通过以下方式连接它们(1.south) -- ($(1.south |- 2.west)$) -- (2.west)

在此处输入图片描述


代码:已更新

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{shapes, positioning}

\tikzset{
  outernode/.style={draw,ultra thick, inner sep=0},
  innernode/.style={inner sep=.3333em, draw, rectangle split, rectangle split parts=#1}
}

\begin{document}
\begin{tikzpicture}
    \node [outernode] (1)
        [innernode=2] { sco\_groups \nodepart{second} id} ;

    \node[below=1cm of 1.south east, anchor=north west, outernode] (2) 
        [innernode=3] {
            sco\_index 
            \nodepart{second} tid
            \nodepart{third} sco\_id
    };
    
    \draw [blue, ultra thick]  (1.-40)   |- (2.one west);
    \draw [red,  ultra thick]  
            (1.south)    node [below left, black] {$1$} |- 
            (2.two west) node [above left, black] {$n$};
    \draw [olive,   ultra thick]  (1.-140)   |- (2.three west);
\end{tikzpicture}
\end{document}

代碼:原始

\documentclass{article}
\usepackage[cm]{fullpage}
\usepackage[utf8]{inputenc}
\usepackage{tikz}
\usetikzlibrary{shapes,positioning}
\usetikzlibrary{calc}

\tikzset{
  outernode/.style={draw,ultra thick,inner sep=0},
  innernode/.style={inner sep=.3333em,draw,rectangle split}
}
\newcommand\innernode[2]{\tikz\node[innernode,rectangle split parts=#1]{#2};}

\begin{document}
\begin{tikzpicture}
  \node (1) [outernode]
       { \innernode 2 {sco\_groups \nodepart{second} id} } ;
  \node (2) [below= 1cm of 1.south east, anchor=north west, outernode]
       { \innernode 3 {sco\_index \nodepart{second} tid \nodepart{third} sco\_id} } ;

\draw [red, ultra thick] 
        (1.south) node [below left, black] {$1$} -- 
        ($(1.south |- 2.west)$) -- 
        (2.west) node [above left, black] {$n$};
\end{tikzpicture}
\end{document}

相关内容